diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java index 705d9591..4928ef72 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java @@ -334,7 +334,7 @@ public class RedisOperationsSessionRepository implements Assert.notNull(sessionRedisOperations, "sessionRedisOperations cannot be null"); this.sessionRedisOperations = sessionRedisOperations; this.expirationPolicy = new RedisSessionExpirationPolicy(sessionRedisOperations, - this); + this::getExpirationsKey, this::getSessionKey); } /** diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisSessionExpirationPolicy.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisSessionExpirationPolicy.java index 70566292..f4de8a1b 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisSessionExpirationPolicy.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisSessionExpirationPolicy.java @@ -20,6 +20,7 @@ import java.util.Calendar; import java.util.Date; import java.util.Set; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -51,14 +52,15 @@ final class RedisSessionExpirationPolicy { .getLog(RedisSessionExpirationPolicy.class); private final RedisOperations redis; - - private final RedisOperationsSessionRepository redisSession; + private final Function lookupExpirationKey; + private final Function lookupSessionKey; RedisSessionExpirationPolicy(RedisOperations sessionRedisOperations, - RedisOperationsSessionRepository redisSession) { + Function lookupExpirationKey, Function lookupSessionKey) { super(); this.redis = sessionRedisOperations; - this.redisSession = redisSession; + this.lookupExpirationKey = lookupExpirationKey; + this.lookupSessionKey = lookupSessionKey; } public void onDelete(Session session) { @@ -111,11 +113,11 @@ final class RedisSessionExpirationPolicy { } String getExpirationKey(long expires) { - return this.redisSession.getExpirationsKey(expires); + return this.lookupExpirationKey.apply(expires); } String getSessionKey(String sessionId) { - return this.redisSession.getSessionKey(sessionId); + return this.lookupSessionKey.apply(sessionId); } public void cleanExpiredSessions() { diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java index 47218559..7ee07b2e 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java @@ -66,7 +66,7 @@ public class RedisSessionExpirationPolicyTests { RedisOperationsSessionRepository repository = new RedisOperationsSessionRepository( this.sessionRedisOperations); this.policy = new RedisSessionExpirationPolicy(this.sessionRedisOperations, - repository); + repository::getExpirationsKey, repository::getSessionKey); this.session = new MapSession(); this.session.setLastAccessedTime(Instant.ofEpochMilli(1429116694675L)); this.session.setId("12345");