From 259aa437d70847d7c9d65e309557ea2034fa7b41 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Tue, 28 Nov 2017 19:57:54 -0500 Subject: [PATCH] Allow refresh auto config to be disabled by property. fixes gh-276 --- .../RefreshAutoConfiguration.java | 2 ++ .../RefreshEndpointAutoConfiguration.java | 6 ++++-- .../RefreshAutoConfigurationTests.java | 18 ++++++++++++------ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java index 339569b53a..2f45e4003a 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; import org.springframework.cloud.context.environment.EnvironmentManager; import org.springframework.cloud.context.refresh.ContextRefresher; @@ -47,6 +48,7 @@ */ @Configuration @ConditionalOnClass(RefreshScope.class) +@ConditionalOnProperty(name = "spring.cloud.refresh.enabled", matchIfMissing = true) @AutoConfigureAfter(WebMvcAutoConfiguration.class) public class RefreshAutoConfiguration { diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java index a360ffbe69..3fa55a9a24 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration.java @@ -44,12 +44,13 @@ */ @Configuration @ConditionalOnClass(Endpoint.class) -@AutoConfigureAfter(EndpointAutoConfiguration.class) +@AutoConfigureAfter({EndpointAutoConfiguration.class, RefreshAutoConfiguration.class}) public class RefreshEndpointAutoConfiguration { + @Bean + @ConditionalOnBean(RefreshScope.class) @ConditionalOnMissingBean @ConditionalOnEnabledHealthIndicator("refresh") - @Bean RefreshScopeHealthIndicator refreshScopeHealthIndicator(RefreshScope scope, ConfigurationPropertiesRebinder rebinder) { return new RefreshScopeHealthIndicator(scope, rebinder); @@ -113,6 +114,7 @@ public RestartEndpoint.ResumeEndpoint resumeEndpoint( protected static class RefreshEndpointConfiguration { @Bean + @ConditionalOnBean(ContextRefresher.class) @ConditionalOnMissingBean public RefreshEndpoint refreshEndpoint(ContextRefresher contextRefresher) { RefreshEndpoint endpoint = new RefreshEndpoint(contextRefresher); diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java index 3ecfeb669d..05422d0d8a 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationTests.java @@ -9,10 +9,8 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Configuration; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.not; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; + /** * @author Dave Syer @@ -26,8 +24,16 @@ public class RefreshAutoConfigurationTests { public void noWarnings() { try (ConfigurableApplicationContext context = getApplicationContext( Config.class)) { - assertTrue(context.containsBean("refreshScope")); - assertThat(output.toString(), not(containsString("WARN"))); + assertThat(context.containsBean("refreshScope")).isTrue(); + assertThat(output.toString()).doesNotContain("WARN"); + } + } + + @Test + public void disabled() { + try (ConfigurableApplicationContext context = getApplicationContext( + Config.class, "spring.cloud.refresh.enabled:false")) { + assertThat(context.containsBean("refreshScope")).isFalse(); } }