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 5e5cff6a..af9b97a5 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,7 +16,6 @@ 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; @@ -27,7 +26,6 @@ import org.springframework.cloud.config.client.ConfigServicePropertySourceLocato 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; /** @@ -59,12 +57,9 @@ public class ConfigClientAutoConfiguration { @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); + return new ConfigServerHealthIndicator(locator); } } diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java index 548930f6..5994fc04 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigClientProperties.java @@ -45,7 +45,7 @@ public class ConfigClientProperties { */ private String profile = "default"; - @Value("${spring.application.name:'application'}") + @Value("${spring.application.name:application}") private String name; private String label = "master"; @@ -79,9 +79,13 @@ public class ConfigClientProperties { this.enabled = enabled; } - public String getUri() { + public String getRawUri() { return extractCredentials()[2]; } + + public String getUri() { + return uri; + } public void setUri(String url) { this.uri = url; @@ -219,7 +223,7 @@ public class ConfigClientProperties { BeanUtils.copyProperties(this, override); override.setName(environment.resolvePlaceholders("${" + ConfigClientProperties.PREFIX - + ".name:${spring.application.name:'application'}}")); + + ".name:${spring.application.name:application}}")); if (environment.containsProperty(ConfigClientProperties.PREFIX + ".profile")) { override.setProfile(environment.getProperty(ConfigClientProperties.PREFIX + ".profile")); } diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerHealthIndicator.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerHealthIndicator.java index f2160821..5fa005d8 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerHealthIndicator.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServerHealthIndicator.java @@ -5,6 +5,7 @@ import java.util.List; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health.Builder; +import org.springframework.core.env.AbstractEnvironment; import org.springframework.core.env.CompositePropertySource; import org.springframework.core.env.Environment; import org.springframework.core.env.PropertySource; @@ -14,18 +15,19 @@ import org.springframework.core.env.PropertySource; */ public class ConfigServerHealthIndicator extends AbstractHealthIndicator { - private Environment env; private ConfigServicePropertySourceLocator locator; + private Environment env; - public ConfigServerHealthIndicator(Environment env, ConfigServicePropertySourceLocator locator) { - this.env = env; + public ConfigServerHealthIndicator(ConfigServicePropertySourceLocator locator) { + this.env = new AbstractEnvironment() { + }; this.locator = locator; } @Override protected void doHealthCheck(Builder builder) throws Exception { try { - PropertySource propertySource = locator.locate(env); + PropertySource propertySource = locator.locate(this.env); builder.up(); if (propertySource instanceof CompositePropertySource) { List sources = new ArrayList<>(); @@ -33,8 +35,10 @@ public class ConfigServerHealthIndicator extends AbstractHealthIndicator { sources.add(ps.getName()); } builder.withDetail("propertySources", sources); - } else { + } else if (propertySource!=null) { builder.withDetail("propertySources", propertySource.toString()); + } else { + builder.down().withDetail("error", "no property sources located"); } } catch (Exception e) { builder.down(e); diff --git a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServicePropertySourceLocator.java b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServicePropertySourceLocator.java index 9dc0bbbd..42b58978 100644 --- a/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServicePropertySourceLocator.java +++ b/spring-cloud-config-client/src/main/java/org/springframework/cloud/config/client/ConfigServicePropertySourceLocator.java @@ -66,7 +66,7 @@ public class ConfigServicePropertySourceLocator implements PropertySourceLocator String errorBody = null; try { Environment result = restTemplate.exchange( - client.getUri() + "/{name}/{profile}/{label}", HttpMethod.GET, + client.getRawUri() + "/{name}/{profile}/{label}", HttpMethod.GET, new HttpEntity((Void) null), Environment.class, client.getName(), client.getProfile(), client.getLabel()).getBody(); for (PropertySource source : result.getPropertySources()) { diff --git a/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigClientPropertiesTests.java b/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigClientPropertiesTests.java index bcef7689..fea4e3d2 100644 --- a/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigClientPropertiesTests.java +++ b/spring-cloud-config-client/src/test/java/org/springframework/cloud/config/client/ConfigClientPropertiesTests.java @@ -35,7 +35,7 @@ public class ConfigClientPropertiesTests { public void vanilla() { locator.setUri("http://localhost:9999"); locator.setPassword("secret"); - assertEquals("http://localhost:9999", locator.getUri()); + assertEquals("http://localhost:9999", locator.getRawUri()); assertEquals("user", locator.getUsername()); assertEquals("secret", locator.getPassword()); } @@ -43,7 +43,7 @@ public class ConfigClientPropertiesTests { @Test public void uriCreds() { locator.setUri("http://foo:bar@localhost:9999"); - assertEquals("http://localhost:9999", locator.getUri()); + assertEquals("http://localhost:9999", locator.getRawUri()); assertEquals("foo", locator.getUsername()); assertEquals("bar", locator.getPassword()); } @@ -52,7 +52,7 @@ public class ConfigClientPropertiesTests { public void explicitPassword() { locator.setUri("http://foo:bar@localhost:9999"); locator.setPassword("secret"); - assertEquals("http://localhost:9999", locator.getUri()); + assertEquals("http://localhost:9999", locator.getRawUri()); assertEquals("foo", locator.getUsername()); assertEquals("secret", locator.getPassword()); }