我们有2个spring-boot(3.3.0)应用程序
网络应用程序
spring.session.jdbc.cleanup-cron
)调度程序应用程序
spring.main.web-application-type=none
)这些应用程序连接到同一个数据库。
当我们更改为在 Web 应用程序上禁用 cleanup-cron 并在调度程序应用程序上启用 cleanup-cron 时,但未创建
JdbcIndexedSessionRepository
。
因为
SessionAutoConfiguration
被注释为 @ConditionalOnWebApplication
并且未自动配置。
如何在
JdbcIndexedSessionRepository
环境下初始化spring.main.web-application-type=none
?
当前的解决方法是
spring-boot-starter-web
添加到依赖项并作为 Web 应用程序运行。spring.main.lazy-initialization=false
,因为 JdbcIndexedSessionRepository#afterPropertiesSet
从未被调用且 cron 未安排。调度程序应用程序
构建.gradle
implementation("org.springframework.session:spring-session-jdbc")
+ implementation("org.springframework.boot:spring-boot-starter-web")
应用程序.属性
+ spring.main.lazy-initialization=false
spring.session.store-type=jdbc
spring.session.timeout=24h
spring.session.jdbc.initialize-schema: never
您可以将自己的实例定义为
@Bean
类中的 @Configuration
:
@Bean
JdbcIndexedSessionRepository jdbcIndexedSessionRepository(JdbcOperations jdbcOperations, TransactionOperations transactionOperations) {
JdbcIndexedSessionRepository repository = new JdbcIndexedSessionRepository(jdbcOperations, transactionOperations);
// any additional customization that's needed
return repository;
}