spring-session的使用详解

spring-session的使用详解为什么要使用spring-session:在我们早期的工程中我们的工具比较简单,采用的是一个war包的形式所有的文件都是在一个工程中这样我们就可

欢迎大家来到IT世界,在知识的湖畔探索吧!

spring session作用:

说白了就是对session就行了一个第三方的管理。解决了session共享的问题。

为什么要使用spring-session:

在我们早期的工程中我们的工具比较简单,采用的是一个war包的形式所有的文件都是在一个工程中这样我们就可以直接通过servlet容器创建与管理,随着网站访问的人越来越多,服务器的压力越大的时候,我们可能就会采用集群的方式管理项目(把同一工程复制多份放到不同的不服务器),这样又会带来问题。所以我们会采用Nginx+tomcat的形式处理。我们就可以通过ip_hash来保证session。随着业务的增大我们会对项目进行拆分,把各个业务模块进行拆分部署(分布式)。这时候我们就需要通过redis/memcached等来进行session的管理。

具体步骤:

  1. 编写一个配置类,用来启用RedisHttpSession功能,并向Spring容器中注册一个RedisConnectionFactory。

    @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 7200)

    publicclass RedisHttpSessionConfig {

    @Bean

    public RedisConnectionFactory connectionFactory() {

    JedisConnectionFactory connectionFactory = new JedisConnectionFactory();

    return connectionFactory;

    }

    }

  2. 编写一个一个AbstractHttpSessionApplicationInitializer实现类,用于向Servlet容器中添加springSessionRepositoryFilter。

    publicclass SpringSessionInitializer extends AbstractHttpSessionApplicationInitializer {

    }

    现在我们就基本配合完了,现在我们对上面这两段代码就行详解,首先我们带的疑问@EnableRedisHttpSession中到底做了什么操作,AbstractHttpSessionApplicationInitializer 的实现类为什么没有重写任何方法。

在步骤1中我们添加了@EnableRedisHttpSession注解并通过@Bean注解注册了一个RedisConnectionFactory到Spring容器中。在@EnableRedisHttpSession注解通过Import,引入了RedisHttpSessionConfiguration配置类。该配置类通过@Bean注解,向Spring容器中注册了一个SessionRepositoryFilter(SessionRepositoryFilter的依赖关系:SessionRepositoryFilter –> SessionRepository –> RedisTemplate –> RedisConnectionFactory)。

注意图中圈红的部分

spring-session的使用详解

注意圈红的部分

步骤2中AbstractHttpSessionApplicationInitializer 类不需要重载或实现任何方法,它的作用是在Servlet容器初始化时,从Spring容器中获取一个默认名叫sessionRepositoryFilter的过滤器类(之前没有注册的话这里找不到会报错),并添加到Servlet过滤器链中

spring-session的使用详解

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/34500.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信