diff --git a/src/main/java/org/springframework/data/redis/cache/RedisCacheManager.java b/src/main/java/org/springframework/data/redis/cache/RedisCacheManager.java index c2ddb1c63..18f26a494 100644 --- a/src/main/java/org/springframework/data/redis/cache/RedisCacheManager.java +++ b/src/main/java/org/springframework/data/redis/cache/RedisCacheManager.java @@ -41,6 +41,7 @@ import org.springframework.util.Assert; * * @author Christoph Strobl * @author Mark Paluch + * @author Yanming Zhou * @since 2.0 * @see RedisCacheConfiguration * @see RedisCacheWriter @@ -336,6 +337,15 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager return this; } + /** + * Returns applied {@link RedisCacheConfiguration}, allow customization base on it. + * + * @return applied {@link RedisCacheConfiguration}. + */ + public RedisCacheConfiguration cacheDefaults() { + return this.defaultCacheConfiguration; + } + /** * Configure a {@link RedisCacheWriter}. * diff --git a/src/test/java/org/springframework/data/redis/cache/RedisCacheManagerUnitTests.java b/src/test/java/org/springframework/data/redis/cache/RedisCacheManagerUnitTests.java index 116099346..70d0a7280 100644 --- a/src/test/java/org/springframework/data/redis/cache/RedisCacheManagerUnitTests.java +++ b/src/test/java/org/springframework/data/redis/cache/RedisCacheManagerUnitTests.java @@ -18,6 +18,7 @@ package org.springframework.data.redis.cache; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.time.Duration; import java.util.Collections; import org.junit.jupiter.api.Test; @@ -34,6 +35,7 @@ import org.springframework.test.util.ReflectionTestUtils; * * @author Christoph Strobl * @author Mark Paluch + * @author Yanming Zhou */ @ExtendWith(MockitoExtension.class) class RedisCacheManagerUnitTests { @@ -188,4 +190,16 @@ class RedisCacheManagerUnitTests { verify(cacheWriter, never()).withStatisticsCollector(any()); } + + @Test // DATAREDIS-481 + void customizeRedisCacheConfigurationBaseOnApplied() { + + RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().disableKeyPrefix(); + RedisCacheManagerBuilder cmb = RedisCacheManager.builder().cacheDefaults(configuration); + + cmb.cacheDefaults(cmb.cacheDefaults().entryTtl(Duration.ofSeconds(10))); + + assertThat(cmb.cacheDefaults().usePrefix()).isFalse(); + assertThat(cmb.cacheDefaults().getTtl()).isEqualTo(Duration.ofSeconds(10)); + } }