Spring Session
Spring Boot 为广泛的数据存储提供了 {url-spring-session-site}[Spring Session] 自动配置。在构建 servlet web 应用程序时,可以自动配置以下存储:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
此外,{url-spring-boot-for-apache-geode-site}[Spring Boot for Apache Geode] 提供 {url-spring-boot-for-apache-geode-docs}#geode-session[Apache Geode 用于作为会话存储的自动配置]。
servlet 自动配置代替了使用 @Enable*HttpSession
的需求。
如果类路径中存在一个 Spring Session 模块,Spring Boot 会自动使用该存储实现。如果你有多个实现,Spring Boot 使用以下顺序选择一个特定实现:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
-
如果 Redis、JDBC、Hazelcast 和 MongoDB 都不可用,我们不会配置
SessionRepository
。
在构建反应式网络应用程序时,可以自动配置以下存储:
-
Redis
-
MongoDB
响应式自动配置取代了使用 @Enable*WebSession
的需求。
与 servlet 配置类似,如果您有多个实现,Spring Boot 会使用以下顺序选择特定实现:
-
Redis
-
MongoDB
-
如果 Redis 或 MongoDB 都不可用,我们不会配置
ReactiveSessionRepository
。
每个存储都有特定的附加设置。例如,可以自定义 JDBC 存储的表名,如下例所示:
spring: session: jdbc: table-name: "SESSIONS"
要设置会话的超时,可以使用 configprop:spring.session.timeout[] 属性。如果 servlet web 应用程序未使用此属性,则自动配置将回退到 configprop:server.servlet.session.timeout[] 的值。
可以使用 @Enable*HttpSession
(servlet)或 @Enable*WebSession
(响应式)控制 Spring Session 的配置。这将导致自动配置回退。然后可以使用注释的属性(而不是先前描述的配置属性)来配置 Spring Session。