Spring Session

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

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

servlet 自动配置无需再使用 @Enable*HttpSession

如果 classpath 上仅存在一个 Spring Session 模块,Spring Boot 会自动使用该存储实现。 如存在多个实现,Spring Boot 按以下顺序选择具体实现:

  1. Redis

  2. JDBC

  3. Hazelcast

  4. MongoDB

  5. 若上述均不可用,则不会配置 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 可通过注解属性而非上述配置属性进行配置。