在微服务中,实现各个微服务模块之间的Session共享,可以通过 Spring Session 和 Redis 技术实现。
本实例直接在之前的两个微服务中添加同样的配置,然后测试两个接口查看 Session 是否一致。
1、maven 配置,新增下面两个引用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、启动类新增注解
@EnableRedisHttpSession
3、配置文件新增配置项
#redis配置 spring.redis.database=0 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= #设置存储格式 spring.session.redis.namespace=spring:session #设置session刷新ON_SAVE(表示在response commit前刷新缓存),IMMEDIATE(表示只要有更新,就刷新缓存) spring.session.redis.flush-mode=on_save # 选择使用redis 作为session存储 spring.session.store-type=redis #设置session超时时间 spring.session.timeout=1200s
4、api接口
@RestController
public class BookController {
@GetMapping("/session")
public String session(HttpServletRequest request) {
return "session: " + request.getSession().getId() + " port: " + request.getServerPort();
}
}
@RestController
public class PlanController {
@GetMapping("/session")
public String session(HttpServletRequest request) {
return "session: " + request.getSession().getId() + " port: " + request.getServerPort();
}
}
5、浏览器直接输入 API 地址
如果输出session id 一致,说明配置成功。