SpringBoot2整合Spring Session
阿新 • • 發佈:2020-12-17
原始碼地址:https://github.com/JianLiangHe/springboot-conformity/tree/master/springboot-conformity-session01
1.Maven依賴
SpringBoot和Spring Session整合的配置需要引入2個依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
2.application.yml
server: port: 8088 spring: # redis配置 redis: # ip地址 host: 139.196.158.120 # 埠 port: 26379 # 密碼 password: root
3.RedisSessionConfig.java 配置類
@Configuration // maxInactiveIntervalInSeconds 預設是1800秒過期,這裡改為60秒 // RedisFlushMode有兩個引數:ON_SAVE(表示在response commit前重新整理快取),IMMEDIATE(表示只要有更新,就重新整理快取) // redisNamespace : redis中的key @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60, redisFlushMode = RedisFlushMode.ON_SAVE, redisNamespace = "springboot-conformity-session01") public class RedisSessionConfig { }
4.新增測試Controller:SessionShareController.java
@Api @RestController @RequestMapping(value = "/sessionShare/") public class SessionShareController { @Value("${server.port}") private Integer port; @ApiOperation("set") @RequestMapping(value = "set", method = RequestMethod.POST) public String set(HttpSession session) { session.setAttribute("user", "Jackey"); return String.valueOf(port); } @ApiOperation("get") @RequestMapping(value = "get", method = RequestMethod.GET) public String get(HttpSession session) { return "user: " + session.getAttribute("user") + ", port: " + port; } }
5.測試結果
1.將專案打成jar包,釋出到伺服器,過程略,分別使用9090、9091埠啟動專案
nohup java -jar springboot-conformity-session01-0.0.1-SNAPSHOT.jar --server.port=9090 &
nohup java -jar springboot-conformity-session01-0.0.1-SNAPSHOT.jar --server.prot=9091 &
先訪問9090埠的服務set方法(此處我用swagger介面文件訪問)
再用9090和9091埠訪問get方法
9090:
9091:
從上面案例看,可以看出session已經實現了共享。