From a4688bdb867730bcf34ed8ee109460c44904b1ea Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 14 Jun 2017 15:19:36 +0200 Subject: [PATCH] Polish "Use Redis client configuration to configure connection factories" In particular, the Lettuce code is not using the new builder API when pooling is required. This will be fixed in a future milestone. Closes gh-9510 --- .../data/redis/JedisConnectionConfiguration.java | 5 +---- .../redis/LettuceConnectionConfiguration.java | 5 +---- .../data/redis/RedisConnectionConfiguration.java | 7 ------- .../redis/RedisAutoConfigurationJedisTests.java | 15 +++++++++------ .../data/redis/RedisAutoConfigurationTests.java | 15 +++++++++------ 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java index 29885204a1e..58b3b5f17be 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/JedisConnectionConfiguration.java @@ -33,7 +33,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisSentinelConfiguration; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration.JedisClientConfigurationBuilder; import org.springframework.data.redis.connection.jedis.JedisConnection; @@ -55,12 +54,10 @@ class JedisConnectionConfiguration extends RedisConnectionConfiguration { private final List builderCustomizers; JedisConnectionConfiguration(RedisProperties properties, - ObjectProvider standaloneConfiguration, ObjectProvider sentinelConfiguration, ObjectProvider clusterConfiguration, ObjectProvider> builderCustomizers) { - super(properties, standaloneConfiguration, sentinelConfiguration, - clusterConfiguration); + super(properties, sentinelConfiguration, clusterConfiguration); this.properties = properties; this.builderCustomizers = builderCustomizers .getIfAvailable(Collections::emptyList); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java index 5b48ab6e7c4..be88d7a4940 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/LettuceConnectionConfiguration.java @@ -36,7 +36,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisSentinelConfiguration; -import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.DefaultLettucePool; import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration.LettuceClientConfigurationBuilder; @@ -58,12 +57,10 @@ class LettuceConnectionConfiguration extends RedisConnectionConfiguration { private final List builderCustomizers; LettuceConnectionConfiguration(RedisProperties properties, - ObjectProvider standaloneConfiguration, ObjectProvider sentinelConfigurationProvider, ObjectProvider clusterConfigurationProvider, ObjectProvider> builderCustomizers) { - super(properties, standaloneConfiguration, sentinelConfigurationProvider, - clusterConfigurationProvider); + super(properties, sentinelConfigurationProvider, clusterConfigurationProvider); this.properties = properties; this.builderCustomizers = builderCustomizers .getIfAvailable(Collections::emptyList); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java index 134ca06d64a..a2f6e886663 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisConnectionConfiguration.java @@ -40,26 +40,19 @@ abstract class RedisConnectionConfiguration { private final RedisProperties properties; - private final RedisStandaloneConfiguration standaloneConfiguration; - private final RedisSentinelConfiguration sentinelConfiguration; private final RedisClusterConfiguration clusterConfiguration; protected RedisConnectionConfiguration(RedisProperties properties, - ObjectProvider standaloneConfigurationProvider, ObjectProvider sentinelConfigurationProvider, ObjectProvider clusterConfigurationProvider) { this.properties = properties; - this.standaloneConfiguration = standaloneConfigurationProvider.getIfAvailable(); this.sentinelConfiguration = sentinelConfigurationProvider.getIfAvailable(); this.clusterConfiguration = clusterConfigurationProvider.getIfAvailable(); } protected final RedisStandaloneConfiguration getStandaloneConfig() { - if (this.standaloneConfiguration != null) { - return this.standaloneConfiguration; - } RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); if (StringUtils.hasText(this.properties.getUrl())) { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java index b28bc33c1a8..58007349c20 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationJedisTests.java @@ -67,12 +67,8 @@ public class RedisAutoConfigurationJedisTests { @Test public void testCustomizeRedisConfiguration() throws Exception { - AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); - ctx.register(RedisAutoConfiguration.class); - ctx.register(CustomConfiguration.class); - ctx.refresh(); - - JedisConnectionFactory cf = ctx.getBean(JedisConnectionFactory.class); + load(CustomConfiguration.class); + JedisConnectionFactory cf = this.context.getBean(JedisConnectionFactory.class); assertThat(cf.isUseSsl()).isTrue(); } @@ -144,8 +140,15 @@ public class RedisAutoConfigurationJedisTests { } private void load(String... environment) { + load(null, environment); + } + + private void load(Class config, String... environment) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); TestPropertyValues.of(environment).applyTo(ctx); + if (config != null) { + ctx.register(config); + } ctx.register(RedisAutoConfiguration.class); ctx.refresh(); this.context = ctx; diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java index a05568bc378..2df886f981d 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfigurationTests.java @@ -83,12 +83,8 @@ public class RedisAutoConfigurationTests { @Test public void testCustomizeRedisConfiguration() { - AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); - ctx.register(RedisAutoConfiguration.class); - ctx.register(CustomConfiguration.class); - ctx.refresh(); - - LettuceConnectionFactory cf = ctx.getBean(LettuceConnectionFactory.class); + load(CustomConfiguration.class); + LettuceConnectionFactory cf = this.context.getBean(LettuceConnectionFactory.class); assertThat(cf.isUseSsl()).isTrue(); } @@ -203,8 +199,15 @@ public class RedisAutoConfigurationTests { } private void load(String... environment) { + load(null, environment); + } + + private void load(Class config, String... environment) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); TestPropertyValues.of(environment).applyTo(ctx); + if (config != null) { + ctx.register(config); + } ctx.register(RedisAutoConfiguration.class); ctx.refresh(); this.context = ctx;