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 339569b5..2f45e400 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.beans.factory.support.BeanDefinitionRegistryPostProce 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 @@ import org.springframework.stereotype.Component; */ @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 a360ffbe..3fa55a9a 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 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter; */ @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 class RefreshEndpointAutoConfiguration { 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 3ecfeb66..05422d0d 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.boot.test.rule.OutputCapture; 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(); } }