Spring Session

Spring Boot 為各種資料儲存提供了 Spring Session 自動配置。構建 Servlet Web 應用時,可以自動配置以下資料儲存:

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

Servlet 自動配置取代了使用 @Enable*HttpSession 的需求。

如果類路徑上存在單個 Spring Session 模組,Spring Boot 會自動使用該儲存實現。如果存在多個實現,Spring Boot 會按以下順序選擇特定的實現:

  1. Redis

  2. JDBC

  3. Hazelcast

  4. MongoDB

  5. 如果 Redis、JDBC、Hazelcast 和 MongoDB 均不可用,我們將不配置 SessionRepository

構建響應式 Web 應用時,可以自動配置以下資料儲存:

  • Redis

  • MongoDB

響應式自動配置取代了使用 @Enable*WebSession 的需求。

與 Servlet 配置類似,如果存在多個實現,Spring Boot 會按以下順序選擇特定的實現:

  1. Redis

  2. MongoDB

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