Spring Session
Spring Boot 为多种数据存储提供了 Spring Session 自动配置。 在构建 servlet Web 应用时,以下存储类型可自动配置:
-
Redis
-
JDBC
-
Hazelcast
-
MongoDB
servlet 自动配置无需再使用 @Enable*HttpSession
。
如果 classpath 上仅存在一个 Spring Session 模块,Spring Boot 会自动使用该存储实现。 如存在多个实现,Spring Boot 按以下顺序选择具体实现:
-
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
(响应式)完全控制 Spring Session 的配置。
此时自动配置将失效,Spring Session 可通过注解属性而非上述配置属性进行配置。