您好,登錄后才能下訂單哦!
怎么在Spring boot中使用spring session實現session共享?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1. pom.xml中引入jar包
<!-- Spring Boot Redis 依賴 --> <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> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency>
2. 添加RedisSessionConfig配置類
在項目的目錄中,創建一個java文件(名稱隨意)即可,我這里名稱是RedisSessionConfig.java
@EnableRedisHttpSession這個注解非常最重要,加了它之后,會使用spring的一個攔截器來實現Session共享的操作,而配置的這個Bean,則是讓Spring根據配置文件中的配置連到Redis。
SpringSession 需要注意的就是redis需要2.8以上版本,然后開啟事件通知,在redis配置文件里面加上
notify-keyspace-events Ex // 打開此配置,其中Ex表示鍵事件通知里面的key過期事件,每當有過期鍵被刪除時,會發送通知
或是使用如下命令開啟開啟事件通知:
redis-cli config set notify-keyspace-events Egx
如果你的Redis不是你自己維護的,比如你是使用阿里云的Redis數據庫(我就是這種情況),你不能夠更改它的配置,那么可以使用下面的java配置文件即可。
package org.spring.springboot.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.ConfigureRedisAction; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @Configuration // maxInactiveIntervalInSeconds 默認是1800秒過期,這里測試修改為60秒 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) public class RedisSessionConfig { @Bean public static ConfigureRedisAction configureRedisAction() { return ConfigureRedisAction.NO_OP; } }
3. 配置redis連接
Spring Boot會自動創建一個RedisConnectionFactory將Spring Session連接到端口6379(默認端口)上localhost上的Redis服務器的連接。在生產環境中,您需要確保更新配置以指向Redis服務器
src/main/resources/application.properties
# Redis 配置 # Redis數據庫索引(默認為0) spring.redis.database=0 # Redis服務器地址 spring.redis.host=192.168.0.1 # Redis服務器連接端口 spring.redis.port=6379 # Redis服務器連接密碼(默認為空) spring.redis.password=1234
看完上述內容,你們掌握怎么在Spring boot中使用spring session實現session共享的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。