diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/HazelcastSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/HazelcastSessionConfiguration.java index 6e6e9dd78ff..c196f4f52c7 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/HazelcastSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/HazelcastSessionConfiguration.java @@ -45,27 +45,21 @@ import org.springframework.session.hazelcast.config.annotation.web.http.Hazelcas @ConditionalOnMissingBean(SessionRepository.class) @ConditionalOnBean(HazelcastInstance.class) @EnableConfigurationProperties(HazelcastSessionProperties.class) +@Import(HazelcastHttpSessionConfiguration.class) class HazelcastSessionConfiguration { - @Configuration(proxyBeanMethods = false) - @Import(HazelcastHttpSessionConfiguration.class) - static class SpringBootHazelcastHttpSessionConfiguration { - - @Bean - SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, HazelcastSessionProperties hazelcastSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) - .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); - map.from(hazelcastSessionProperties::getMapName).to(sessionRepository::setSessionMapName); - map.from(hazelcastSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); - map.from(hazelcastSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); - }; - } - + @Bean + SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, HazelcastSessionProperties hazelcastSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); + map.from(hazelcastSessionProperties::getMapName).to(sessionRepository::setSessionMapName); + map.from(hazelcastSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); + map.from(hazelcastSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); + }; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionConfiguration.java index e531514411f..3253f38b59f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionConfiguration.java @@ -50,7 +50,7 @@ import org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessi @ConditionalOnMissingBean(SessionRepository.class) @ConditionalOnBean(DataSource.class) @EnableConfigurationProperties(JdbcSessionProperties.class) -@Import(DatabaseInitializationDependencyConfigurer.class) +@Import({ DatabaseInitializationDependencyConfigurer.class, JdbcHttpSessionConfiguration.class }) class JdbcSessionConfiguration { @Bean @@ -63,25 +63,19 @@ class JdbcSessionConfiguration { return new JdbcSessionDataSourceScriptDatabaseInitializer(dataSourceToInitialize, properties); } - @Configuration(proxyBeanMethods = false) - @Import(JdbcHttpSessionConfiguration.class) - static class SpringBootJdbcHttpSessionConfiguration { - - @Bean - SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, JdbcSessionProperties jdbcSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) - .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); - map.from(jdbcSessionProperties::getTableName).to(sessionRepository::setTableName); - map.from(jdbcSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); - map.from(jdbcSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); - map.from(jdbcSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron); - }; - } + @Bean + SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, JdbcSessionProperties jdbcSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); + map.from(jdbcSessionProperties::getTableName).to(sessionRepository::setTableName); + map.from(jdbcSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); + map.from(jdbcSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); + map.from(jdbcSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron); + }; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoReactiveSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoReactiveSessionConfiguration.java index 6aabfbda9d3..241d88a2902 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoReactiveSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoReactiveSessionConfiguration.java @@ -43,25 +43,19 @@ import org.springframework.session.data.mongo.config.annotation.web.reactive.Rea @ConditionalOnMissingBean(ReactiveSessionRepository.class) @ConditionalOnBean(ReactiveMongoOperations.class) @EnableConfigurationProperties(MongoSessionProperties.class) +@Import(ReactiveMongoWebSessionConfiguration.class) class MongoReactiveSessionConfiguration { - @Configuration(proxyBeanMethods = false) - @Import(ReactiveMongoWebSessionConfiguration.class) - static class SpringBootMongoWebSessionConfiguration { - - @Bean - ReactiveSessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, MongoSessionProperties mongoSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout())) - .to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds())); - map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName); - }; - } - + @Bean + ReactiveSessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, MongoSessionProperties mongoSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds())); + map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName); + }; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoSessionConfiguration.java index 85a9c5865b6..e7426f19b5c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/MongoSessionConfiguration.java @@ -43,25 +43,19 @@ import org.springframework.session.data.mongo.config.annotation.web.http.MongoHt @ConditionalOnMissingBean(SessionRepository.class) @ConditionalOnBean(MongoOperations.class) @EnableConfigurationProperties(MongoSessionProperties.class) +@Import(MongoHttpSessionConfiguration.class) class MongoSessionConfiguration { - @Configuration(proxyBeanMethods = false) - @Import(MongoHttpSessionConfiguration.class) - static class SpringBootMongoHttpSessionConfiguration { - - @Bean - SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, MongoSessionProperties mongoSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) - .to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds())); - map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName); - }; - } - + @Bean + SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, MongoSessionProperties mongoSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties.determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setMaxInactiveIntervalInSeconds((int) timeout.getSeconds())); + map.from(mongoSessionProperties::getCollectionName).to(sessionRepository::setCollectionName); + }; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisReactiveSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisReactiveSessionConfiguration.java index a4b41ccef07..b0063c13a86 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisReactiveSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisReactiveSessionConfiguration.java @@ -43,26 +43,20 @@ import org.springframework.session.data.redis.config.annotation.web.server.Redis @ConditionalOnMissingBean(ReactiveSessionRepository.class) @ConditionalOnBean(ReactiveRedisConnectionFactory.class) @EnableConfigurationProperties(RedisSessionProperties.class) +@Import(RedisWebSessionConfiguration.class) class RedisReactiveSessionConfiguration { - @Configuration(proxyBeanMethods = false) - @Import(RedisWebSessionConfiguration.class) - static class SpringBootRedisWebSessionConfiguration { - - @Bean - ReactiveSessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout())) - .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); - map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); - map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); - }; - } - + @Bean + ReactiveSessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties.determineTimeout(() -> serverProperties.getReactive().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); + map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); + map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); + }; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionConfiguration.java index 8d1aee67ddc..929f0ea1cce 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/RedisSessionConfiguration.java @@ -57,40 +57,35 @@ class RedisSessionConfiguration { @Configuration(proxyBeanMethods = false) @ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "default", matchIfMissing = true) + @Import(RedisHttpSessionConfiguration.class) static class DefaultRedisSessionConfiguration { - @Configuration(proxyBeanMethods = false) - @Import(RedisHttpSessionConfiguration.class) - static class SpringBootRedisHttpSessionConfiguration { - - @Bean - SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, - ServerProperties serverProperties) { - String cleanupCron = redisSessionProperties.getCleanupCron(); - if (cleanupCron != null) { - throw new InvalidConfigurationPropertyValueException("spring.session.redis.cleanup-cron", - cleanupCron, - "Cron-based cleanup is only supported when spring.session.redis.repository-type is set to " - + "indexed."); - } - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) - .to(sessionRepository::setDefaultMaxInactiveInterval); - map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); - map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); - map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); - }; + @Bean + SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, + ServerProperties serverProperties) { + String cleanupCron = redisSessionProperties.getCleanupCron(); + if (cleanupCron != null) { + throw new InvalidConfigurationPropertyValueException("spring.session.redis.cleanup-cron", cleanupCron, + "Cron-based cleanup is only supported when spring.session.redis.repository-type is set to " + + "indexed."); } - + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties + .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) + .to(sessionRepository::setDefaultMaxInactiveInterval); + map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); + map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); + map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); + }; } } @Configuration(proxyBeanMethods = false) @ConditionalOnProperty(prefix = "spring.session.redis", name = "repository-type", havingValue = "indexed") + @Import(RedisIndexedHttpSessionConfiguration.class) static class IndexedRedisSessionConfiguration { @Bean @@ -102,27 +97,20 @@ class RedisSessionConfiguration { }; } - @Configuration(proxyBeanMethods = false) - @Import(RedisIndexedHttpSessionConfiguration.class) - static class SpringBootRedisIndexedHttpSessionConfiguration { - - @Bean - SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( - SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, - ServerProperties serverProperties) { - PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); - return (sessionRepository) -> { - map.from(sessionProperties - .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) - .to((timeout) -> sessionRepository - .setDefaultMaxInactiveInterval((int) timeout.getSeconds())); - map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); - map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); - map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); - map.from(redisSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron); - }; - } - + @Bean + SessionRepositoryCustomizer springBootSessionRepositoryCustomizer( + SessionProperties sessionProperties, RedisSessionProperties redisSessionProperties, + ServerProperties serverProperties) { + PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); + return (sessionRepository) -> { + map.from(sessionProperties + .determineTimeout(() -> serverProperties.getServlet().getSession().getTimeout())) + .to((timeout) -> sessionRepository.setDefaultMaxInactiveInterval((int) timeout.getSeconds())); + map.from(redisSessionProperties::getNamespace).to(sessionRepository::setRedisKeyNamespace); + map.from(redisSessionProperties::getFlushMode).to(sessionRepository::setFlushMode); + map.from(redisSessionProperties::getSaveMode).to(sessionRepository::setSaveMode); + map.from(redisSessionProperties::getCleanupCron).to(sessionRepository::setCleanupCron); + }; } }