Polish "Rework Spring Session auto-configuration to use customizers"
See gh-32554
This commit is contained in:
parent
ad8753923a
commit
7e47d3bbd6
|
|
@ -45,11 +45,8 @@ import org.springframework.session.hazelcast.config.annotation.web.http.Hazelcas
|
||||||
@ConditionalOnMissingBean(SessionRepository.class)
|
@ConditionalOnMissingBean(SessionRepository.class)
|
||||||
@ConditionalOnBean(HazelcastInstance.class)
|
@ConditionalOnBean(HazelcastInstance.class)
|
||||||
@EnableConfigurationProperties(HazelcastSessionProperties.class)
|
@EnableConfigurationProperties(HazelcastSessionProperties.class)
|
||||||
class HazelcastSessionConfiguration {
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(HazelcastHttpSessionConfiguration.class)
|
@Import(HazelcastHttpSessionConfiguration.class)
|
||||||
static class SpringBootHazelcastHttpSessionConfiguration {
|
class HazelcastSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
SessionRepositoryCustomizer<HazelcastIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
SessionRepositoryCustomizer<HazelcastIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
|
|
@ -57,8 +54,7 @@ class HazelcastSessionConfiguration {
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
||||||
.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
|
||||||
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
||||||
map.from(hazelcastSessionProperties::getMapName).to(sessionRepository::setSessionMapName);
|
map.from(hazelcastSessionProperties::getMapName).to(sessionRepository::setSessionMapName);
|
||||||
map.from(hazelcastSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
map.from(hazelcastSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
||||||
|
|
@ -67,5 +63,3 @@ class HazelcastSessionConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ import org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessi
|
||||||
@ConditionalOnMissingBean(SessionRepository.class)
|
@ConditionalOnMissingBean(SessionRepository.class)
|
||||||
@ConditionalOnBean(DataSource.class)
|
@ConditionalOnBean(DataSource.class)
|
||||||
@EnableConfigurationProperties(JdbcSessionProperties.class)
|
@EnableConfigurationProperties(JdbcSessionProperties.class)
|
||||||
@Import(DatabaseInitializationDependencyConfigurer.class)
|
@Import({ DatabaseInitializationDependencyConfigurer.class, JdbcHttpSessionConfiguration.class })
|
||||||
class JdbcSessionConfiguration {
|
class JdbcSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
@ -63,25 +63,19 @@ class JdbcSessionConfiguration {
|
||||||
return new JdbcSessionDataSourceScriptDatabaseInitializer(dataSourceToInitialize, properties);
|
return new JdbcSessionDataSourceScriptDatabaseInitializer(dataSourceToInitialize, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(JdbcHttpSessionConfiguration.class)
|
|
||||||
static class SpringBootJdbcHttpSessionConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
SessionRepositoryCustomizer<JdbcIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
SessionRepositoryCustomizer<JdbcIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
SessionProperties sessionProperties, JdbcSessionProperties jdbcSessionProperties,
|
SessionProperties sessionProperties, JdbcSessionProperties jdbcSessionProperties,
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
||||||
.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
|
||||||
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
||||||
map.from(jdbcSessionProperties::getTableName).to(sessionRepository::setTableName);
|
map.from(jdbcSessionProperties::getTableName).to(sessionRepository::setTableName);
|
||||||
map.from(jdbcSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
map.from(jdbcSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
||||||
map.from(jdbcSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
map.from(jdbcSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
||||||
map.from(jdbcSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron);
|
map.from(jdbcSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron);
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,8 @@ import org.springframework.session.data.mongo.config.annotation.web.reactive.Rea
|
||||||
@ConditionalOnMissingBean(ReactiveSessionRepository.class)
|
@ConditionalOnMissingBean(ReactiveSessionRepository.class)
|
||||||
@ConditionalOnBean(ReactiveMongoOperations.class)
|
@ConditionalOnBean(ReactiveMongoOperations.class)
|
||||||
@EnableConfigurationProperties(MongoSessionProperties.class)
|
@EnableConfigurationProperties(MongoSessionProperties.class)
|
||||||
class MongoReactiveSessionConfiguration {
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(ReactiveMongoWebSessionConfiguration.class)
|
@Import(ReactiveMongoWebSessionConfiguration.class)
|
||||||
static class SpringBootMongoWebSessionConfiguration {
|
class MongoReactiveSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
ReactiveSessionRepositoryCustomizer<ReactiveMongoSessionRepository> springBootSessionRepositoryCustomizer(
|
ReactiveSessionRepositoryCustomizer<ReactiveMongoSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
|
|
@ -55,13 +52,10 @@ class MongoReactiveSessionConfiguration {
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout()))
|
||||||
.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout()))
|
|
||||||
.to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds()));
|
.to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds()));
|
||||||
map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName);
|
map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,8 @@ import org.springframework.session.data.mongo.config.annotation.web.http.MongoHt
|
||||||
@ConditionalOnMissingBean(SessionRepository.class)
|
@ConditionalOnMissingBean(SessionRepository.class)
|
||||||
@ConditionalOnBean(MongoOperations.class)
|
@ConditionalOnBean(MongoOperations.class)
|
||||||
@EnableConfigurationProperties(MongoSessionProperties.class)
|
@EnableConfigurationProperties(MongoSessionProperties.class)
|
||||||
class MongoSessionConfiguration {
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(MongoHttpSessionConfiguration.class)
|
@Import(MongoHttpSessionConfiguration.class)
|
||||||
static class SpringBootMongoHttpSessionConfiguration {
|
class MongoSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
SessionRepositoryCustomizer<MongoIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
SessionRepositoryCustomizer<MongoIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
|
|
@ -55,13 +52,10 @@ class MongoSessionConfiguration {
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
||||||
.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
|
||||||
.to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds()));
|
.to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds()));
|
||||||
map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName);
|
map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,8 @@ import org.springframework.session.data.redis.config.annotation.web.server.Redis
|
||||||
@ConditionalOnMissingBean(ReactiveSessionRepository.class)
|
@ConditionalOnMissingBean(ReactiveSessionRepository.class)
|
||||||
@ConditionalOnBean(ReactiveRedisConnectionFactory.class)
|
@ConditionalOnBean(ReactiveRedisConnectionFactory.class)
|
||||||
@EnableConfigurationProperties(RedisSessionProperties.class)
|
@EnableConfigurationProperties(RedisSessionProperties.class)
|
||||||
class RedisReactiveSessionConfiguration {
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(RedisWebSessionConfiguration.class)
|
@Import(RedisWebSessionConfiguration.class)
|
||||||
static class SpringBootRedisWebSessionConfiguration {
|
class RedisReactiveSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
ReactiveSessionRepositoryCustomizer<ReactiveRedisSessionRepository> springBootSessionRepositoryCustomizer(
|
ReactiveSessionRepositoryCustomizer<ReactiveRedisSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
|
|
@ -55,8 +52,7 @@ class RedisReactiveSessionConfiguration {
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout()))
|
||||||
.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout()))
|
|
||||||
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
||||||
map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace);
|
map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace);
|
||||||
map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
||||||
|
|
@ -64,5 +60,3 @@ class RedisReactiveSessionConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -57,11 +57,8 @@ class RedisSessionConfiguration {
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "default",
|
@ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "default",
|
||||||
matchIfMissing = true)
|
matchIfMissing = true)
|
||||||
static class DefaultRedisSessionConfiguration {
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(RedisHttpSessionConfiguration.class)
|
@Import(RedisHttpSessionConfiguration.class)
|
||||||
static class SpringBootRedisHttpSessionConfiguration {
|
static class DefaultRedisSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
SessionRepositoryCustomizer<RedisSessionRepository> springBootSessionRepositoryCustomizer(
|
SessionRepositoryCustomizer<RedisSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
|
|
@ -69,8 +66,7 @@ class RedisSessionConfiguration {
|
||||||
ServerProperties serverProperties) {
|
ServerProperties serverProperties) {
|
||||||
String cleanupCron = redisSessionProperties.getCleanupCron();
|
String cleanupCron = redisSessionProperties.getCleanupCron();
|
||||||
if (cleanupCron != null) {
|
if (cleanupCron != null) {
|
||||||
throw new InvalidConfigurationPropertyValueException("spring.session.redis.cleanup-cron",
|
throw new InvalidConfigurationPropertyValueException("spring.session.redis.cleanup-cron", cleanupCron,
|
||||||
cleanupCron,
|
|
||||||
"Cron-based cleanup is only supported when spring.session.redis.repository-type is set to "
|
"Cron-based cleanup is only supported when spring.session.redis.repository-type is set to "
|
||||||
+ "indexed.");
|
+ "indexed.");
|
||||||
}
|
}
|
||||||
|
|
@ -87,10 +83,9 @@ class RedisSessionConfiguration {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "indexed")
|
@ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "indexed")
|
||||||
|
@Import(RedisIndexedHttpSessionConfiguration.class)
|
||||||
static class IndexedRedisSessionConfiguration {
|
static class IndexedRedisSessionConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
|
@ -102,10 +97,6 @@ class RedisSessionConfiguration {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
|
||||||
@Import(RedisIndexedHttpSessionConfiguration.class)
|
|
||||||
static class SpringBootRedisIndexedHttpSessionConfiguration {
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
SessionRepositoryCustomizer<RedisIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
SessionRepositoryCustomizer<RedisIndexedSessionRepository> springBootSessionRepositoryCustomizer(
|
||||||
SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties,
|
SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties,
|
||||||
|
|
@ -114,8 +105,7 @@ class RedisSessionConfiguration {
|
||||||
return (sessionRepository) -> {
|
return (sessionRepository) -> {
|
||||||
map.from(sessionProperties
|
map.from(sessionProperties
|
||||||
.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout()))
|
||||||
.to((timeout) -> sessionRepository
|
.to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
||||||
.setDefaultMaxInactiveInterval((int) timeout.getSeconds()));
|
|
||||||
map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace);
|
map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace);
|
||||||
map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode);
|
||||||
map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode);
|
||||||
|
|
@ -126,5 +116,3 @@ class RedisSessionConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue