Spring Session

Spring Boot 为各种数据存储提供了 Spring Session 自动配置。 在构建 servlet Web 应用程序时,可以自动配置以下存储:

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

此外,https://github.com/spring-projects/spring-boot-data-geode[Spring Boot for Apache Geode] 提供了 使用 Apache Geode 作为会话存储的自动配置

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 属性。 如果在 servlet Web 应用程序中未设置该属性,自动配置将回退到 server.servlet.session.timeout 的值。

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