DATAREDIS-1118 - Allow configuration of RedisCacheWriter on existing RedisCacheManagerBuilder.

We now allow configuration of the RedisCacheWriter on existing RedisCacheManagerBuilder objects.

Original Pull Request: #522
This commit is contained in:
Mark Paluch
2020-04-07 09:25:41 +02:00
committed by Christoph Strobl
parent 9dcbced2be
commit 0a8d431570
2 changed files with 50 additions and 3 deletions

View File

@@ -190,6 +190,16 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager
RedisCacheConfiguration.defaultCacheConfig());
}
/**
* Entry point for builder style {@link RedisCacheManager} configuration.
*
* @return new {@link RedisCacheManagerBuilder}.
* @since 2.3
*/
public static RedisCacheManagerBuilder builder() {
return new RedisCacheManagerBuilder();
}
/**
* Entry point for builder style {@link RedisCacheManager} configuration.
*
@@ -272,18 +282,20 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager
* Configurator for creating {@link RedisCacheManager}.
*
* @author Christoph Strobl
* @author Mark Strobl
* @author Mark Paluch
* @author Kezhu Wang
* @since 2.0
*/
public static class RedisCacheManagerBuilder {
private final RedisCacheWriter cacheWriter;
private @Nullable RedisCacheWriter cacheWriter;
private RedisCacheConfiguration defaultCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
private final Map<String, RedisCacheConfiguration> initialCaches = new LinkedHashMap<>();
private boolean enableTransactions;
boolean allowInFlightCacheCreation = true;
private RedisCacheManagerBuilder() {}
private RedisCacheManagerBuilder(RedisCacheWriter cacheWriter) {
this.cacheWriter = cacheWriter;
}
@@ -298,7 +310,7 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager
Assert.notNull(connectionFactory, "ConnectionFactory must not be null!");
return builder(new DefaultRedisCacheWriter(connectionFactory));
return new RedisCacheManagerBuilder(new DefaultRedisCacheWriter(connectionFactory));
}
/**
@@ -329,6 +341,22 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager
return this;
}
/**
* Configure a {@link RedisCacheWriter}.
*
* @param cacheWriter must not be {@literal null}.
* @return this {@link RedisCacheManagerBuilder}.
* @since 2.3
*/
public RedisCacheManagerBuilder cacheWriter(RedisCacheWriter cacheWriter) {
Assert.notNull(cacheWriter, "CacheWriter must not be null!");
this.cacheWriter = cacheWriter;
return this;
}
/**
* Enable {@link RedisCache}s to synchronize cache put/evict operations with ongoing Spring-managed transactions.
*
@@ -435,6 +463,8 @@ public class RedisCacheManager extends AbstractTransactionSupportingCacheManager
*/
public RedisCacheManager build() {
Assert.notNull(cacheWriter, "CacheWriter must not be null!");
RedisCacheManager cm = new RedisCacheManager(cacheWriter, defaultCacheConfiguration, initialCaches,
allowInFlightCacheCreation);