Spring Session
Spring Boot 為各種資料儲存區提供 Spring Session 自動組態。在建置 servlet 網路應用程式時,可以自動組態以下儲存區
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
servlet 自動組態取代了使用 @Enable*HttpSession
的需求。
如果 classpath 上存在單一 Spring Session 模組,Spring Boot 會自動使用該儲存實作。如果您有多個實作,Spring Boot 會使用以下順序選擇特定的實作
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
-
如果 Redis、JDBC、Hazelcast 和 MongoDB 皆不可用,我們將不會組態
SessionRepository
。
在建置反應式網路應用程式時,可以自動組態以下儲存區
-
Redis
-
MongoDB
反應式自動組態取代了使用 @Enable*WebSession
的需求。
與 servlet 組態類似,如果您有多個實作,Spring Boot 會使用以下順序選擇特定的實作
-
Redis
-
MongoDB
-
如果 Redis 和 MongoDB 皆不可用,我們將不會組態
ReactiveSessionRepository
。
每個儲存區都有特定的額外設定。例如,可以自訂 JDBC 儲存區的資料表名稱,如下列範例所示
-
屬性
-
YAML
spring.session.jdbc.table-name=SESSIONS
spring:
session:
jdbc:
table-name: "SESSIONS"
若要設定 session 的逾時時間,您可以使用 spring.session.timeout
屬性。如果未針對 servlet 網路應用程式設定該屬性,則自動組態會退回使用 server.servlet.session.timeout
的值。
您可以使用 @Enable*HttpSession
(servlet) 或 @Enable*WebSession
(反應式) 來控制 Spring Session 的組態。這會導致自動組態退回。然後可以使用註解的屬性而非先前描述的組態屬性來組態 Spring Session。