Spring4会话

Posted

技术标签:

【中文标题】Spring4会话【英文标题】:Spring4 session 【发布时间】:2014-12-04 07:25:59 【问题描述】:

对不起!我在这里有个问题。哪个版本的 Spring 是“org.springframework.session.*”?我根本无法在 Spring4.0 jar 中找到它。 这是课程:

public abstract class AbstractSessionWebSocketMessageBrokerConfigurer<S extends ExpiringSession>
            extends AbstractWebSocketMessageBrokerConfigurer 
    @Autowired
    @SuppressWarnings("rawtypes")
    private SessionRepository sessionRepository;
    @Autowired
    private ApplicationEventPublisher eventPublisher;

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) 
        registration.setInterceptors(sessionRepositoryInterceptor());
    

    @Override
    public final void registerStompEndpoints(StompEndpointRegistry registry) 
        configureStompEndpoints(new SessionStompEndpointRegistry(registry,sessionRepositoryInterceptor()));
    

    /**
     * Register STOMP endpoints mapping each to a specific URL and (optionally)
     * enabling and configuring SockJS fallback options with a
     * @link SessionRepositoryMessageInterceptor automatically added as an
     * interceptor.
     *
     * @param registry
     *            the @link StompEndpointRegistry which automatically has a
     *            @link SessionRepositoryMessageInterceptor added to it.
     */
    protected abstract void configureStompEndpoints(StompEndpointRegistry registry);

    @Override
    public void configureWebSocketTransport(
            WebSocketTransportRegistration registration) 
        registration.addDecoratorFactory(wsConnectHandlerDecoratorFactory());
    

    @Bean
    public WebSocketRegistryListener webSocketRegistryListener() 
        return new WebSocketRegistryListener();
    

    @Bean
    public WebSocketConnectHandlerDecoratorFactory wsConnectHandlerDecoratorFactory() 
        return new WebSocketConnectHandlerDecoratorFactory(eventPublisher);
    

    @Bean
    @SuppressWarnings("unchecked")
    public SessionRepositoryMessageInterceptor<S> sessionRepositoryInterceptor() 
        return new SessionRepositoryMessageInterceptor<S>(sessionRepository);
    

    static class SessionStompEndpointRegistry implements StompEndpointRegistry 
        private final StompEndpointRegistry registry;
        private final HandshakeInterceptor interceptor;

        public SessionStompEndpointRegistry(StompEndpointRegistry registry,HandshakeInterceptor interceptor) 
            this.registry = registry;
            this.interceptor = interceptor;
        

        public StompWebSocketEndpointRegistration addEndpoint(String... paths) 
            StompWebSocketEndpointRegistration endpoints = registry.addEndpoint(paths);
            endpoints.addInterceptors(interceptor);
            return endpoints;
        
    

【问题讨论】:

【参考方案1】:

Spring Session 是一个单独的项目:https://github.com/spring-projects/spring-session。

您应该使用一些依赖管理工具(Gradle 或 Maven)来控制您的应用程序的工件。

在此处查看 WebScoket 示例:https://github.com/spring-projects/spring-session/tree/master/samples/websocket。

Spring Session 工件是:

compile "org.springframework.session:spring-session:1.0.0.RC1"

【讨论】:

因为现在是一个孵化项目,你还应该配置maven/gradle来使用这个工件存储库:repo.spring.io/libs-milestone 感谢 Artem Bilan。非常感谢! 感谢您的提醒。我这里还有一个问题。我还不能解决它。你能帮我解决它吗?一个是[链接]***.com/questions/27352255/websocket-registrylistener另一个是[链接]***.com/questions/27353716/…

以上是关于Spring4会话的主要内容,如果未能解决你的问题,请参考以下文章

Spring4.1新特性——Spring缓存框架增强(转)

spring4 - bean

spring4.0源码导入

问候Spring4

Spring4 Quartz2 动态任务,Spring4整合quartz2.2.3简单动态任务

Spring4.x新特性