1. 程式人生 > 實用技巧 >SpringBoot2整合Spring Session

SpringBoot2整合Spring Session

原始碼地址: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已經實現了共享。