8.5. spring 会话

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

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

此外,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 存储的表名称,如以下示例所示:

spring.session.jdbc.table-name=SESSIONS

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

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

最后更新于