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 c2ddb1c63f..18f26a4940 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 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author Yanming Zhou * @since 2.0 * @see RedisCacheConfiguration * @see RedisCacheWriter @@ -336,6 +337,15 @@ public RedisCacheManagerBuilder cacheDefaults(RedisCacheConfiguration defaultCac 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 1160993463..70d0a72807 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 @@ 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 @@ * * @author Christoph Strobl * @author Mark Paluch + * @author Yanming Zhou */ @ExtendWith(MockitoExtension.class) class RedisCacheManagerUnitTests { @@ -188,4 +190,16 @@ void builderWontSetStatisticsCollectorByDefault() { 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)); + } }