Spring Session
Spring Boot 為各種資料儲存提供了 Spring Session 自動配置。構建 Servlet Web 應用時,可以自動配置以下資料儲存:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
Servlet 自動配置取代了使用 @Enable*HttpSession
的需求。
如果類路徑上存在單個 Spring Session 模組,Spring Boot 會自動使用該儲存實現。如果存在多個實現,Spring Boot 會按以下順序選擇特定的實現:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
-
如果 Redis、JDBC、Hazelcast 和 MongoDB 均不可用,我們將不配置
SessionRepository
。
構建響應式 Web 應用時,可以自動配置以下資料儲存:
-
Redis
-
MongoDB
響應式自動配置取代了使用 @Enable*WebSession
的需求。
與 Servlet 配置類似,如果存在多個實現,Spring Boot 會按以下順序選擇特定的實現:
-
Redis
-
MongoDB
-
如果 Redis 和 MongoDB 均不可用,我們將不配置
ReactiveSessionRepository
。
每種儲存都有特定的附加設定。例如,可以自定義 JDBC 儲存的表名,如下例所示:
-
Properties
-
YAML
spring.session.jdbc.table-name=SESSIONS
spring:
session:
jdbc:
table-name: "SESSIONS"
你可以使用 spring.session.timeout
屬性來設定 Session 的超時時間。如果 Servlet Web 應用中未設定該屬性,自動配置將回退到 server.servlet.session.timeout
的值。
你可以使用 @Enable*HttpSession
(Servlet) 或 @Enable*WebSession
(響應式) 來控制 Spring Session 的配置。這會導致自動配置失效。然後可以使用註解的屬性而不是前面描述的配置屬性來配置 Spring Session。