Ensure app doesn't barf when actuator missing

This commit is contained in:
Dave Syer
2014-06-24 17:14:48 +01:00
parent 0515fcc0ac
commit 9787e36b06
2 changed files with 47 additions and 41 deletions

View File

@@ -18,7 +18,7 @@
package org.springframework.platform.autoconfigure;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.actuate.endpoint.EnvironmentEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData;
import org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor;
import org.springframework.context.ConfigurableApplicationContext;
@@ -43,7 +44,7 @@ import org.springframework.platform.context.scope.refresh.RefreshScope;
@Configuration
@ConditionalOnClass(RefreshScope.class)
@AutoConfigureAfter(EndpointAutoConfiguration.class)
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class RefreshAutoConfiguration {
@Bean
@@ -77,48 +78,53 @@ public class RefreshAutoConfiguration {
}
@Bean
@ConditionalOnMissingBean
public RestartEndpoint restartContextListener() {
return new RestartEndpoint();
}
@Configuration
@ConditionalOnExpression("${endpoints.refresh.enabled:true}")
@ConditionalOnBean(ConfigServiceBootstrapConfiguration.class)
protected static class RefreshEndpointConfiguration {
@ConditionalOnClass(Endpoint.class)
protected static class RefreshEndpointsConfiguration {
@Bean
@ConditionalOnMissingBean
public RefreshEndpoint refreshEndpoint(ConfigurableApplicationContext context,
ConfigServiceBootstrapConfiguration bootstrap) {
RefreshEndpoint endpoint = new RefreshEndpoint(context, bootstrap);
return endpoint;
public RestartEndpoint restartContextListener() {
return new RestartEndpoint();
}
@Configuration
@ConditionalOnExpression("${endpoints.refresh.enabled:true}")
@ConditionalOnBean(ConfigServiceBootstrapConfiguration.class)
protected static class RefreshEndpointConfiguration {
@Bean
@ConditionalOnMissingBean
public RefreshEndpoint refreshEndpoint(
ConfigurableApplicationContext context,
ConfigServiceBootstrapConfiguration bootstrap) {
RefreshEndpoint endpoint = new RefreshEndpoint(context, bootstrap);
return endpoint;
}
}
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass(EnvironmentEndpoint.class)
@ConditionalOnExpression("${endpoints.env.enabled:true}")
@ConditionalOnBean(EnvironmentEndpoint.class)
protected static class EnvironmentEndpointConfiguration {
@Autowired
private RestartEndpoint restartEndpoint;
@Bean
public EnvironmentManagerMvcEndpoint environmentManagerEndpoint(
EnvironmentEndpoint delegate, EnvironmentManager environment) {
return new EnvironmentManagerMvcEndpoint(delegate, environment);
}
@Bean
public RestartMvcEndpoint restartMvcEndpoint() {
return new RestartMvcEndpoint(restartEndpoint);
}
}
}
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass(EnvironmentEndpoint.class)
@ConditionalOnExpression("${endpoints.env.enabled:true}")
@ConditionalOnBean(EnvironmentEndpoint.class)
protected static class EnvironmentEndpointConfiguration {
@Autowired
private RestartEndpoint restartEndpoint;
@Bean
public EnvironmentManagerMvcEndpoint environmentManagerEndpoint(
EnvironmentEndpoint delegate, EnvironmentManager environment) {
return new EnvironmentManagerMvcEndpoint(delegate, environment);
}
@Bean
public RestartMvcEndpoint restartMvcEndpoint() {
return new RestartMvcEndpoint(restartEndpoint);
}
}
}

View File

@@ -41,7 +41,7 @@ public class RestartIntegrationTests {
@Test
public void testRestartTwice() throws Exception {
context = SpringApplication.run(TestConfiguration.class, "--endpoints.restart.enabled=true");
context = SpringApplication.run(TestConfiguration.class, "--endpoints.restart.enabled=true", "--servert.port=0");
RestartEndpoint endpoint = context.getBean(RestartEndpoint.class);
assertNotNull(context.getParent());
assertNull(context.getParent().getParent());