diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/CommonsClientAutoConfiguration.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/CommonsClientAutoConfiguration.java index e277b0c2..cffbbba0 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/CommonsClientAutoConfiguration.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/CommonsClientAutoConfiguration.java @@ -19,6 +19,7 @@ package org.springframework.cloud.client; import java.util.ArrayList; import java.util.List; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; @@ -59,7 +60,7 @@ public class CommonsClientAutoConfiguration { @Bean @ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled", matchIfMissing = true) public DiscoveryClientHealthIndicator discoveryClientHealthIndicator( - DiscoveryClient discoveryClient, DiscoveryClientHealthIndicatorProperties properties) { + ObjectProvider discoveryClient, DiscoveryClientHealthIndicatorProperties properties) { return new DiscoveryClientHealthIndicator(discoveryClient, properties); } diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/health/DiscoveryClientHealthIndicator.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/health/DiscoveryClientHealthIndicator.java index 8f86a386..915ae195 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/health/DiscoveryClientHealthIndicator.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/health/DiscoveryClientHealthIndicator.java @@ -21,6 +21,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; import org.springframework.cloud.client.discovery.DiscoveryClient; @@ -39,17 +40,12 @@ public class DiscoveryClientHealthIndicator implements DiscoveryHealthIndicator, private int order = Ordered.HIGHEST_PRECEDENCE; - private final DiscoveryClient discoveryClient; + private final ObjectProvider discoveryClient; private final DiscoveryClientHealthIndicatorProperties properties; private final Log log = LogFactory.getLog(DiscoveryClientHealthIndicator.class); - @Deprecated - public DiscoveryClientHealthIndicator(DiscoveryClient discoveryClient) { - this(discoveryClient, new DiscoveryClientHealthIndicatorProperties()); - } - - public DiscoveryClientHealthIndicator(DiscoveryClient discoveryClient, DiscoveryClientHealthIndicatorProperties properties) { + public DiscoveryClientHealthIndicator(ObjectProvider discoveryClient, DiscoveryClientHealthIndicatorProperties properties) { this.discoveryClient = discoveryClient; this.properties = properties; } @@ -67,8 +63,9 @@ public class DiscoveryClientHealthIndicator implements DiscoveryHealthIndicator, if (this.discoveryInitialized.get()) { try { - List services = this.discoveryClient.getServices(); - String description = (this.properties.isIncludeDescription()) ? this.discoveryClient.description() : ""; + DiscoveryClient client = this.discoveryClient.getIfAvailable(); + List services = client.getServices(); + String description = (this.properties.isIncludeDescription()) ? client.description() : ""; builder.status(new Status("UP", description)) .withDetail("services", services); }