我注意到,为了禁用 spring 会话,可以将配置属性
spring.session.store-type
设置为 none
。
但是,该属性已被删除(ref)。
那么,我现在可以知道如何在新版本中禁用它吗?
如果您希望 Spring Boot 退出并且希望控制 Spring Session 配置,您可以使用
@Enable*HttpSession
,如 Spring Boot 文档中所述:
您可以使用
(servlet)或@Enable*HttpSession
(反应式)来控制 Spring Session 的配置。 这将导致自动配置停止。 然后可以使用注释的属性而不是前面描述的配置属性来配置 Spring Session。@Enable*WebSession
您可以将该注释与 Spring Boot 中的
@ConditionalOnProperty
注释结合使用。
另一个解决方案是使用 Testcontainers 支持 或 Docker Compose 支持,这样你在开发/生产中就有相同的设置。
相关:
这是一个为
dev
配置文件停用 Spring 会话自动配置的类的完整示例。它的工作原理是提供 SessionRepository
,如 3.x 迁移指南中所述。
如果您设置属性
server.servlet.session.persistent=true
,当 Spring Boot devtools 保存后进行热重载时,您仍然会登录。
@Configuration
@Profile("dev")
public class NoSpringSessionInDevProfileConfig {
@Bean
public SessionRepository<MapSession> sessionRepository() {
return new MapSessionRepository(new HashMap<>());
}
}
带有停用自动配置条件的 Spring Boot 代码位于
org.springframework.boot.autoconfigure.session.SessionAutoConfiguration
:
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type.REACTIVE)
@ConditionalOnMissingBean(ReactiveSessionRepository.class)
@Import({ RedisReactiveSessionConfiguration.class, MongoReactiveSessionConfiguration.class })
static class ReactiveSessionConfiguration {
}