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存储的表名,如下例所示

  • 属性

  • YAML

spring.session.jdbc.table-name=SESSIONS
spring:
  session:
    jdbc:
      table-name: "SESSIONS"

要设置会话超时,可以使用spring.session.timeout属性。如果在Servlet Web应用程序中未设置此属性,则自动配置将回退到server.servlet.session.timeout的值。

您可以使用@Enable*HttpSession(Servlet)或@Enable*WebSession(响应式)来控制Spring Session的配置。这将导致自动配置失效。然后可以使用注解的属性来配置Spring Session,而不是前面描述的配置属性。