From 1a2c21a081b8b7b32db9b16d488fb23bfdc03e9c Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 16 Jan 2015 14:12:59 +0000 Subject: [PATCH] Move health indicator to main application context --- .../ConfigClientAutoConfiguration.java | 23 +++++++++++++++++++ .../PropertySourceBootstrapConfiguration.java | 17 -------------- .../ConfigClientAutoConfigurationTests.java | 18 +++++++++++++-- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfiguration.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfiguration.java index ad24bc00..5e5cff6a 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfiguration.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfiguration.java @@ -16,10 +16,18 @@ package org.springframework.cloud.autoconfigure; import org.springframework.beans.factory.BeanFactoryUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.health.HealthIndicator; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.config.client.ConfigClientProperties; +import org.springframework.cloud.config.client.ConfigServerHealthIndicator; +import org.springframework.cloud.config.client.ConfigServicePropertySourceLocator; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.Environment; /** @@ -45,4 +53,19 @@ public class ConfigClientAutoConfiguration { return client; } + @Configuration + @ConditionalOnClass(HealthIndicator.class) + @ConditionalOnBean(ConfigServicePropertySourceLocator.class) + @ConditionalOnProperty(value = "spring.cloud.config.enabled", matchIfMissing = true) + protected static class ConfigServerHealthIndicatorConfiguration { + + @Autowired + private ConfigurableEnvironment environment; + + @Bean + public ConfigServerHealthIndicator configServerHealthIndicator(ConfigServicePropertySourceLocator locator) { + return new ConfigServerHealthIndicator(environment, locator); + } + } + } diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java index 5eddcad5..2504e3c6 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/bootstrap/config/PropertySourceBootstrapConfiguration.java @@ -23,13 +23,10 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.actuate.health.HealthIndicator; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.bootstrap.BootstrapApplicationListener; import org.springframework.cloud.config.client.ConfigClientProperties; -import org.springframework.cloud.config.client.ConfigServerHealthIndicator; import org.springframework.cloud.config.client.ConfigServicePropertySourceLocator; import org.springframework.cloud.config.client.PropertySourceLocator; import org.springframework.context.ApplicationContextInitializer; @@ -125,18 +122,4 @@ public class PropertySourceBootstrapConfiguration implements } - @Configuration - @ConditionalOnClass(HealthIndicator.class) - @ConditionalOnProperty(value = "spring.cloud.config.enabled", matchIfMissing = true) - protected static class ConfigServerHealthIndicatorConfiguration { - - @Autowired - private ConfigurableEnvironment environment; - - @Bean - public ConfigServerHealthIndicator configServerHealthIndicator(ConfigServicePropertySourceLocator locator) { - return new ConfigServerHealthIndicator(environment, locator); - } - } - } diff --git a/spring-cloud-config-client/src/test/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfigurationTests.java b/spring-cloud-config-client/src/test/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfigurationTests.java index 17cc12ef..a6129a17 100644 --- a/spring-cloud-config-client/src/test/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfigurationTests.java +++ b/spring-cloud-config-client/src/test/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfigurationTests.java @@ -5,7 +5,9 @@ import static org.junit.Assert.assertEquals; import org.junit.Test; import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration; import org.springframework.cloud.config.client.ConfigClientProperties; +import org.springframework.cloud.config.client.ConfigServerHealthIndicator; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -22,11 +24,23 @@ public class ConfigClientAutoConfigurationTests { @Test public void withParent() { - ConfigurableApplicationContext context = new SpringApplicationBuilder(ConfigClientAutoConfiguration.class) - .child(Object.class).web(false).run(); + ConfigurableApplicationContext context = new SpringApplicationBuilder( + ConfigClientAutoConfiguration.class).child(Object.class).web(false).run(); assertEquals(1, BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context, ConfigClientProperties.class).length); context.close(); } + @Test + public void withHealthIndicator() { + ConfigurableApplicationContext context = new SpringApplicationBuilder( + PropertySourceBootstrapConfiguration.class) + .child(ConfigClientAutoConfiguration.class).web(false).run(); + assertEquals(1, BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context, + ConfigClientProperties.class).length); + assertEquals(1, BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context, + ConfigServerHealthIndicator.class).length); + context.close(); + } + }