diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.java index bb5e38439a17..6fd370f30e99 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisAutoConfiguration.java @@ -29,6 +29,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -53,9 +54,11 @@ * @author Christoph Strobl * @author Phillip Webb * @author Eddú Meléndez + * @author Simon Buettner */ @Configuration @ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class }) +@ConditionalOnProperty(prefix = "spring.redis", value = "enabled", matchIfMissing = true) @EnableConfigurationProperties public class RedisAutoConfiguration { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java index 08f778f48fee..2d563e096274 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/redis/RedisProperties.java @@ -24,10 +24,16 @@ * @author Dave Syer * @author Christoph Strobl * @author Eddú Meléndez + * @author Simon Buettner */ @ConfigurationProperties(prefix = "spring.redis") public class RedisProperties { + /** + * Enables or disables redis autoconfiguration. + */ + private boolean enabled = true; + /** * Database index used by the connection factory. */ @@ -57,6 +63,14 @@ public class RedisProperties { private Sentinel sentinel; + public boolean isEnabled() { + return this.enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + public int getDatabase() { return this.database; } 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 77873afc3bd1..dff3c1a242e8 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 @@ -24,6 +24,7 @@ import org.junit.Test; import redis.clients.jedis.Jedis; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.test.EnvironmentTestUtils; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -43,6 +44,7 @@ * @author Christian Dupuis * @author Christoph Strobl * @author Eddú Meléndez + * @author Simon Buettner */ public class RedisAutoConfigurationTests { @@ -67,6 +69,19 @@ public void testDefaultRedisConfiguration() throws Exception { assertNotNull(this.context.getBean(StringRedisTemplate.class)); } + @Test + public void testEnabledRedisConfiguration() throws Exception { + load("spring.redis.enabled:true"); + assertNotNull(this.context.getBean("redisTemplate", RedisOperations.class)); + assertNotNull(this.context.getBean(StringRedisTemplate.class)); + } + + @Test(expected = NoSuchBeanDefinitionException.class) + public void testDisabledRedisConfiguration() throws Exception { + load("spring.redis.enabled:false"); + this.context.getBean("redisTemplate", RedisOperations.class); + } + @Test public void testOverrideRedisConfiguration() throws Exception { load("spring.redis.host:foo", "spring.redis.database:1");