diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java index 677fc936..f50f75bf 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java @@ -80,9 +80,8 @@ import org.springframework.util.StringValueResolver; * @since 1.0 */ @Configuration(proxyBeanMethods = false) -@EnableScheduling public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguration - implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware, SchedulingConfigurer { + implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware { static final String DEFAULT_CLEANUP_CRON = "0 * * * * *"; @@ -280,11 +279,6 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio } } - @Override - public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - taskRegistrar.addCronTask(() -> sessionRepository().cleanupExpiredSessions(), this.cleanupCron); - } - private RedisTemplate createRedisTemplate() { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setKeySerializer(new StringRedisSerializer()); @@ -350,4 +344,25 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio } + /** + * Configuration of scheduled job for cleaning up expired sessions. + */ + @EnableScheduling + @Configuration(proxyBeanMethods = false) + class SessionCleanupConfiguration implements SchedulingConfigurer { + + private final RedisIndexedSessionRepository sessionRepository; + + SessionCleanupConfiguration(RedisIndexedSessionRepository sessionRepository) { + this.sessionRepository = sessionRepository; + } + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + taskRegistrar.addCronTask(this.sessionRepository::cleanupExpiredSessions, + RedisHttpSessionConfiguration.this.cleanupCron); + } + + } + } diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java index 363dfe8b..4d7c1a3c 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java @@ -75,9 +75,8 @@ import org.springframework.util.StringValueResolver; * @see EnableJdbcHttpSession */ @Configuration(proxyBeanMethods = false) -@EnableScheduling public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration - implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware, SchedulingConfigurer { + implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware { static final String DEFAULT_CLEANUP_CRON = "0 * * * * *"; @@ -258,11 +257,6 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration this.saveMode = attributes.getEnum("saveMode"); } - @Override - public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { - taskRegistrar.addCronTask(() -> sessionRepository().cleanUpExpiredSessions(), this.cleanupCron); - } - private static JdbcTemplate createJdbcTemplate(DataSource dataSource) { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.afterPropertiesSet(); @@ -283,4 +277,25 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration return conversionService; } + /** + * Configuration of scheduled job for cleaning up expired sessions. + */ + @EnableScheduling + @Configuration(proxyBeanMethods = false) + class SessionCleanupConfiguration implements SchedulingConfigurer { + + private final JdbcIndexedSessionRepository sessionRepository; + + SessionCleanupConfiguration(JdbcIndexedSessionRepository sessionRepository) { + this.sessionRepository = sessionRepository; + } + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + taskRegistrar.addCronTask(this.sessionRepository::cleanUpExpiredSessions, + JdbcHttpSessionConfiguration.this.cleanupCron); + } + + } + }