Spring Session
Spring Boot 为多种数据存储提供了 Spring Session 的自动配置。在构建基于 Servlet 的 Web 应用时,以下存储可以自动配置:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
Servlet 自动配置取代了使用 @Enable*HttpSession
的需求。
如果类路径上存在单个 Spring Session 模块,Spring Boot 会自动使用该存储实现。如果有多个实现,Spring Boot 会按照以下顺序选择特定的实现:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
-
如果 Redis、JDBC、Hazelcast 和 MongoDB 都不可用,我们不会配置 SessionRepository。
在构建响应式 Web 应用程序时,可以自动配置以下存储:
-
Redis
-
MongoDB
响应式的自动配置取代了需要使用 @Enable*WebSession
的需求。
与 Servlet 配置类似,如果有多个实现,Spring Boot 将按照以下顺序选择特定的实现:
-
Redis
-
MongoDB
-
如果既没有 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
(reactive)来控制 Spring Session 的配置。这将导致自动配置退出。然后,你可以使用注解的属性来配置 Spring Session,而不是之前描述的配置属性。