这里session同步靠的是redis,即如果一个服务中的session有值就直接把该值拿到redis中去,如果redis中的session中的key存在则覆盖,不存在则创建,这样多个服务就可以共享一个session了,即把session的放到redis中去
所需依赖
<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功能
在启动类上加上注解
@EnableRedisHttpSession
在配置文件中配置redis的地址
在application.yml中增加redis配置
spring:
redis:
host: 192.168.108.3
port: 6379
测试
在8081的服务上,请求8081/login则在session中保存一个key和value
@GetMapping(value = "/login")
public String firstResp (HttpServletRequest request){
request.getSession().setAttribute("loginUser", "张三");
return "ok";
}
在8082服务商,请求getsession获取8081服务存储的session的值
@GetMapping(value = "/getsession")
public Object firstResp (HttpServletRequest request){
Object loginUser = request.getSession().getAttribute("loginUser");
return loginUser == null?"null":loginUser;
}