session 会话共享
第一种: 第一种是使用容器扩展来实现,比如基于Tomcat的tomcat-redis-session-manager插件,基于Jetty的jetty-session-redis插件;这个方案的好处是对项目来说是透明的,无需改动代码,但是由于过于依赖容器,一旦容器升级或者更换意味着又得从新来过;
第二种: 第二种是自己写一套Session会话管理的工具类,在需要使用会话的时候都从自己的工具类中获取,而工具类后端存储可以放到Redis中。这个方案灵活性很好,但开发需要一些额外的时间。
第三种: 第三种是使用框架的会话管理工具,也就是我们要介绍的spring-session,可以理解是替换了Servlet那一套会话管理,既不依赖容器,又不需要改动代码,并且是使用spring-data-redis连接和操作redis,可以说是非常完美的解决方案
看官方文档最详细
基于XML的HttpSession示例
连接到Redis 然后创建RedisHttpSessionConfiguration这个bean 中配置springSessionRepositoryFilter这个过滤器
基于注解的HttpSession 示例
编写一个类并注解为@EnableRedisHttpSession,在配置类的方法中配置@bean
编写一个servlet容器初始化类
@EnableRedisHttpSession
public class SpringSessionConfig {
@Bean
public JedisConnectionFactory connectionFactory(){
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
jedisConnectionFactory.setHostName("192.168.119.128");
jedisConnectionFactory.setPort(6379);
jedisConnectionFactory.setPassword("123456");
return jedisConnectionFactory;
}
}
public class ServletInitializer extends AbstractHttpSessionApplicationInitializer {
public ServletInitializer() {
super(SpringSessionConfig.class);
}
}