Spring Session

Spring Boot 為各種資料儲存區提供 Spring Session 自動組態。在建置 servlet 網路應用程式時,可以自動組態以下儲存區

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

servlet 自動組態取代了使用 @Enable*HttpSession 的需求。

如果 classpath 上存在單一 Spring Session 模組,Spring Boot 會自動使用該儲存實作。如果您有多個實作,Spring Boot 會使用以下順序選擇特定的實作

  1. Redis

  2. JDBC

  3. Hazelcast

  4. MongoDB

  5. 如果 Redis、JDBC、Hazelcast 和 MongoDB 皆不可用,我們將不會組態 SessionRepository

在建置反應式網路應用程式時,可以自動組態以下儲存區

  • Redis

  • MongoDB

反應式自動組態取代了使用 @Enable*WebSession 的需求。

與 servlet 組態類似,如果您有多個實作,Spring Boot 會使用以下順序選擇特定的實作

  1. Redis

  2. MongoDB

  3. 如果 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。