Skip to content

Commit c88456a

Browse files
committed
Rework scheduling configurers into nested configuration
This commit extracts scheduling configurers that are used in Redis and JDBC configurations into nested configuration classes in order to avoid bean method references. Resolves: #1516
1 parent f5abd55 commit c88456a

File tree

2 files changed

+44
-14
lines changed

2 files changed

+44
-14
lines changed

spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java

+22-7
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,8 @@
8080
* @since 1.0
8181
*/
8282
@Configuration(proxyBeanMethods = false)
83-
@EnableScheduling
8483
public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguration
85-
implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware, SchedulingConfigurer {
84+
implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware {
8685

8786
static final String DEFAULT_CLEANUP_CRON = "0 * * * * *";
8887

@@ -280,11 +279,6 @@ public void setImportMetadata(AnnotationMetadata importMetadata) {
280279
}
281280
}
282281

283-
@Override
284-
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
285-
taskRegistrar.addCronTask(() -> sessionRepository().cleanupExpiredSessions(), this.cleanupCron);
286-
}
287-
288282
private RedisTemplate<Object, Object> createRedisTemplate() {
289283
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
290284
redisTemplate.setKeySerializer(new StringRedisSerializer());
@@ -350,4 +344,25 @@ public void afterPropertiesSet() {
350344

351345
}
352346

347+
/**
348+
* Configuration of scheduled job for cleaning up expired sessions.
349+
*/
350+
@EnableScheduling
351+
@Configuration(proxyBeanMethods = false)
352+
class SessionCleanupConfiguration implements SchedulingConfigurer {
353+
354+
private final RedisIndexedSessionRepository sessionRepository;
355+
356+
SessionCleanupConfiguration(RedisIndexedSessionRepository sessionRepository) {
357+
this.sessionRepository = sessionRepository;
358+
}
359+
360+
@Override
361+
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
362+
taskRegistrar.addCronTask(this.sessionRepository::cleanupExpiredSessions,
363+
RedisHttpSessionConfiguration.this.cleanupCron);
364+
}
365+
366+
}
367+
353368
}

spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java

+22-7
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,8 @@
7575
* @see EnableJdbcHttpSession
7676
*/
7777
@Configuration(proxyBeanMethods = false)
78-
@EnableScheduling
7978
public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration
80-
implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware, SchedulingConfigurer {
79+
implements BeanClassLoaderAware, EmbeddedValueResolverAware, ImportAware {
8180

8281
static final String DEFAULT_CLEANUP_CRON = "0 * * * * *";
8382

@@ -258,11 +257,6 @@ public void setImportMetadata(AnnotationMetadata importMetadata) {
258257
this.saveMode = attributes.getEnum("saveMode");
259258
}
260259

261-
@Override
262-
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
263-
taskRegistrar.addCronTask(() -> sessionRepository().cleanUpExpiredSessions(), this.cleanupCron);
264-
}
265-
266260
private static JdbcTemplate createJdbcTemplate(DataSource dataSource) {
267261
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
268262
jdbcTemplate.afterPropertiesSet();
@@ -283,4 +277,25 @@ private static GenericConversionService createConversionServiceWithBeanClassLoad
283277
return conversionService;
284278
}
285279

280+
/**
281+
* Configuration of scheduled job for cleaning up expired sessions.
282+
*/
283+
@EnableScheduling
284+
@Configuration(proxyBeanMethods = false)
285+
class SessionCleanupConfiguration implements SchedulingConfigurer {
286+
287+
private final JdbcIndexedSessionRepository sessionRepository;
288+
289+
SessionCleanupConfiguration(JdbcIndexedSessionRepository sessionRepository) {
290+
this.sessionRepository = sessionRepository;
291+
}
292+
293+
@Override
294+
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
295+
taskRegistrar.addCronTask(this.sessionRepository::cleanUpExpiredSessions,
296+
JdbcHttpSessionConfiguration.this.cleanupCron);
297+
}
298+
299+
}
300+
286301
}

0 commit comments

Comments
 (0)