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 439b48fc..c55e6386 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.servlet.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) //TODO: support reactive @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 7ec94d24..b5aa429f 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 @@ -45,15 +45,16 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter; */ @Configuration @ConditionalOnClass(Health.class) -@AutoConfigureAfter(EndpointAutoConfiguration.class) +@AutoConfigureAfter({EndpointAutoConfiguration.class, RefreshAutoConfiguration.class}) @Import({ RestartEndpointWithIntegrationConfiguration.class, RestartEndpointWithoutIntegrationConfiguration.class, PauseResumeEndpointsConfiguration.class }) public class RefreshEndpointAutoConfiguration { + @Bean + @ConditionalOnBean(RefreshScope.class) @ConditionalOnMissingBean @ConditionalOnEnabledHealthIndicator("refresh") - @Bean RefreshScopeHealthIndicator refreshScopeHealthIndicator(RefreshScope scope, ConfigurationPropertiesRebinder rebinder) { return new RefreshScopeHealthIndicator(scope, rebinder); 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 fd31a2e7..657b5427 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 @@ -10,10 +10,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 @@ -27,8 +25,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(); } }