Redis实现session共享

1.session共享是基于spring+redis来实现的,首先从web.xml开始说起。

2. 在web.xml里面配置了一个filter,代码如下:


        springSessionRepositoryFilter
        org.springframework.web.filter.DelegatingFilterProxy
    

    
        springSessionRepositoryFilter
        /*
    

DelegatingFilterProxy 类将通过springSessionRepositoryFilter 这个名称去查找Spring容器中配置的Bean并将其转换为过滤器,对于调用DelegatingFilterProxy的每个请求,将调用springSessionRepositoryFilter这个过滤器。

3.配置spring-redis.xml

        class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
        
    

(3-1)RedisHttpSessionConfiguration通过@Bean的方式将RedisMessageListenerContainer、RedisTemplate、RedisOperationsSessionRepository 等注入到Spring容器中。

4.当我们配置 DelegatingFilterProxy 时,会配置 filter-name:springSessionRepositoryFilter,当我们配置 RedisHttpSessionConfiguration 这个bean时,这个Filter 则由Spring 给我生成,而这个Filter 实际是 :SessionRepositoryFilter, 当有请求到达时,DelegatingFilterProxy 委托给 SessionRepositoryFilter,而它又将HttpServletRequest,HttpServletResponse 进行一定的包装,重写对session操作的接口,然后将包装好的request,response 传递到后续的Filter中,完成了对Session的拦截操作,后续应用操作的Session 都是Spring Session 包装后的Session。

5.这个是基本的实现,下次对源码做个简单分析。

 

 

你可能感兴趣的:(【redis】,redis,session)