盒子
盒子
文章目录
  1. 所需依赖
  2. 开启redisHttpSession功能
  3. 在配置文件中配置redis的地址
  4. 测试

springboot使用spring-session完成session共享

这里session同步靠的是redis,即如果一个服务中的session有值就直接把该值拿到redis中去,如果redis中的session中的key存在则覆盖,不存在则创建,这样多个服务就可以共享一个session了,即把session的放到redis中去

所需依赖

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>

开启redisHttpSession功能

在启动类上加上注解

1
@EnableRedisHttpSession

在配置文件中配置redis的地址

在application.yml中增加redis配置

1
2
3
4
spring:
redis:
host: 192.168.108.3
port: 6379

测试

在8081的服务上,请求8081/login则在session中保存一个key和value

1
2
3
4
5
@GetMapping(value = "/login")
public String firstResp (HttpServletRequest request){
request.getSession().setAttribute("loginUser", "张三");
return "ok";
}

在8082服务商,请求getsession获取8081服务存储的session的值

1
2
3
4
5
@GetMapping(value = "/getsession")
public Object firstResp (HttpServletRequest request){
Object loginUser = request.getSession().getAttribute("loginUser");
return loginUser == null?"null":loginUser;
}

希望对您有所帮助
May all the ordinary are great, all the ignoble bloom
  • smile