对于最新稳定版本,请使用 Spring Boot 4.0.4spring-doc.cadn.net.cn

Spring Session

Spring Boot 提供了 Spring Session 的自动配置,可以支持多种数据存储。 当构建一个Servlet Web应用时,以下这些存储可以被自动配置:spring-doc.cadn.net.cn

servlet自动配置替代了使用@Enable*HttpSession的需求。spring-doc.cadn.net.cn

如果类路径中仅包含一个 Spring Session 模块,Spring Boot 将自动使用该存储实现。 如果存在多个实现,则 Spring Boot 将按照以下顺序选择特定的实现:spring-doc.cadn.net.cn

  1. Redisspring-doc.cadn.net.cn

  2. JDBCspring-doc.cadn.net.cn

  3. Hazelcastspring-doc.cadn.net.cn

  4. MongoDBspring-doc.cadn.net.cn

  5. 如果 Redis、JDBC、Hazelcast 和 MongoDB 均不可用,我们不会配置 SessionRepositoryspring-doc.cadn.net.cn

当构建一个响应式Web应用程序时,以下存储可以自动配置:spring-doc.cadn.net.cn

reactive 自动配置替代了使用 @Enable*WebSession 的需求。spring-doc.cadn.net.cn

类似于Servlet配置,在有多于一个实现时,Spring Boot会按照以下顺序选择特定的实现:spring-doc.cadn.net.cn

  1. Redisspring-doc.cadn.net.cn

  2. MongoDBspring-doc.cadn.net.cn

  3. 如果 Redis 和 MongoDB 均不可用,我们不会配置 ReactiveSessionRepositoryspring-doc.cadn.net.cn

每位商店都有特定的附加设置。例如,可以自定义JDBC存储的表名,如下例所示:spring-doc.cadn.net.cn

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

对于设置会话超时时间,您可以使用spring.session.timeout属性。 如果在Servlet Web应用程序中未设置该属性,则自动配置将回退到server.servlet.session.timeout的值。spring-doc.cadn.net.cn

你可以使用 @Enable*HttpSession(Servlet)或 @Enable*WebSession(响应式)来控制 Spring Session 的配置。 这将使自动配置退避。 随后,Spring Session 可通过注解的属性进行配置,而无需使用前面所述的配置属性。spring-doc.cadn.net.cn