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 188779ae..ad24bc00 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 @@ -15,7 +15,9 @@ */ package org.springframework.cloud.autoconfigure; +import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.cloud.config.client.ConfigClientProperties; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @@ -33,7 +35,12 @@ import org.springframework.core.env.Environment; public class ConfigClientAutoConfiguration { @Bean - public ConfigClientProperties configClientProperties(Environment environment) { + public ConfigClientProperties configClientProperties(Environment environment, + ApplicationContext context) { + if (context.getParent()!=null && BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context.getParent(), + ConfigClientProperties.class).length > 0) { + return BeanFactoryUtils.beanOfType(context.getParent(), ConfigClientProperties.class); + } ConfigClientProperties client = new ConfigClientProperties(environment); return client; } 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 new file mode 100644 index 00000000..17cc12ef --- /dev/null +++ b/spring-cloud-config-client/src/test/java/org/springframework/cloud/autoconfigure/ConfigClientAutoConfigurationTests.java @@ -0,0 +1,32 @@ +package org.springframework.cloud.autoconfigure; + +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.config.client.ConfigClientProperties; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +public class ConfigClientAutoConfigurationTests { + + @Test + public void sunnyDay() { + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( + ConfigClientAutoConfiguration.class); + assertEquals(1, BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context, + ConfigClientProperties.class).length); + context.close(); + } + + @Test + public void withParent() { + ConfigurableApplicationContext context = new SpringApplicationBuilder(ConfigClientAutoConfiguration.class) + .child(Object.class).web(false).run(); + assertEquals(1, BeanFactoryUtils.beanNamesForTypeIncludingAncestors(context, + ConfigClientProperties.class).length); + context.close(); + } + +}