Skip to content

Commit 6437b81

Browse files
quaffjxblum
authored andcommitted
Improve RedisCacheManagerBuilder to expose applied RedisCacheConfiguration.
Now it is possible to construct a new, custom default RedisCacheConfiguration from an existing, default RedisCacheConfiguration. This is useful in a Spring Boot context using the RedisCacheManagerBuilderCustomizer and acquiring access to the default RedisCacheConfiguration, which likely originated from Spring Boot Redis CacheProperties. Resolves spring-projects#2583
1 parent fe81d6f commit 6437b81

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

Diff for: src/main/java/org/springframework/data/redis/cache/RedisCacheManager.java

+10
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
*
4242
* @author Christoph Strobl
4343
* @author Mark Paluch
44+
* @author Yanming Zhou
4445
* @since 2.0
4546
* @see RedisCacheConfiguration
4647
* @see RedisCacheWriter
@@ -336,6 +337,15 @@ public RedisCacheManagerBuilder cacheDefaults(RedisCacheConfiguration defaultCac
336337
return this;
337338
}
338339

340+
/**
341+
* Returns applied {@link RedisCacheConfiguration}, allow customization base on it.
342+
*
343+
* @return applied {@link RedisCacheConfiguration}.
344+
*/
345+
public RedisCacheConfiguration cacheDefaults() {
346+
return this.defaultCacheConfiguration;
347+
}
348+
339349
/**
340350
* Configure a {@link RedisCacheWriter}.
341351
*

Diff for: src/test/java/org/springframework/data/redis/cache/RedisCacheManagerUnitTests.java

+14
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.assertj.core.api.Assertions.*;
1919
import static org.mockito.Mockito.*;
2020

21+
import java.time.Duration;
2122
import java.util.Collections;
2223

2324
import org.junit.jupiter.api.Test;
@@ -34,6 +35,7 @@
3435
*
3536
* @author Christoph Strobl
3637
* @author Mark Paluch
38+
* @author Yanming Zhou
3739
*/
3840
@ExtendWith(MockitoExtension.class)
3941
class RedisCacheManagerUnitTests {
@@ -188,4 +190,16 @@ void builderWontSetStatisticsCollectorByDefault() {
188190

189191
verify(cacheWriter, never()).withStatisticsCollector(any());
190192
}
193+
194+
@Test // DATAREDIS-481
195+
void customizeRedisCacheConfigurationBaseOnApplied() {
196+
197+
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig().disableKeyPrefix();
198+
RedisCacheManagerBuilder cmb = RedisCacheManager.builder().cacheDefaults(configuration);
199+
200+
cmb.cacheDefaults(cmb.cacheDefaults().entryTtl(Duration.ofSeconds(10)));
201+
202+
assertThat(cmb.cacheDefaults().usePrefix()).isFalse();
203+
assertThat(cmb.cacheDefaults().getTtl()).isEqualTo(Duration.ofSeconds(10));
204+
}
191205
}

0 commit comments

Comments
 (0)