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 09c1cb3b..eda8a027 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,7 +45,7 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter; * @author Venil Noronha */ @Configuration -@ConditionalOnClass(Health.class) +@ConditionalOnClass({EndpointAutoConfiguration.class, Health.class}) @AutoConfigureAfter({EndpointAutoConfiguration.class, RefreshAutoConfiguration.class}) @Import({ RestartEndpointWithIntegrationConfiguration.class, RestartEndpointWithoutIntegrationConfiguration.class, diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationMoreClassPathTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationMoreClassPathTests.java new file mode 100644 index 00000000..cc15022f --- /dev/null +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/autoconfigure/RefreshAutoConfigurationMoreClassPathTests.java @@ -0,0 +1,48 @@ +package org.springframework.cloud.autoconfigure; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.test.rule.OutputCapture; +import org.springframework.cloud.endpoint.event.RefreshEventListener; +import org.springframework.cloud.test.ClassPathExclusions; +import org.springframework.cloud.test.ModifiedClassPathRunner; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Configuration; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Spencer Gibb + */ +@RunWith(ModifiedClassPathRunner.class) +@ClassPathExclusions({"spring-boot-actuator-autoconfigure-*.jar", "spring-boot-starter-actuator-*.jar"}) +public class RefreshAutoConfigurationMoreClassPathTests { + + @Rule + public OutputCapture outputCapture = new OutputCapture(); + + @Test + public void unknownClassProtected() { + try (ConfigurableApplicationContext context = getApplicationContext( + Config.class, "debug=true")) { + String output = this.outputCapture.toString(); + assertThat(output).doesNotContain("Failed to introspect annotations on [class org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration") + .doesNotContain("TypeNotPresentExceptionProxy"); + } + } + + private static ConfigurableApplicationContext getApplicationContext( + Class configuration, String... properties) { + return new SpringApplicationBuilder(configuration).web(WebApplicationType.NONE).properties(properties).run(); + } + + @Configuration + @EnableAutoConfiguration + static class Config { + + } +}