From f60dbeb5e6265b04604bd7774e06678769df67ba Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 26 Jan 2017 10:29:35 -0700 Subject: [PATCH] Install FeaturesEndpoint even if discovery disabled. FeaturesEndpoint does not at all require discovery. fixes gh-167 --- .../CommonsClientAutoConfiguration.java | 43 ++++++++++--------- .../CommonsClientAutoConfigurationTests.java | 2 +- 2 files changed, 24 insertions(+), 21 deletions(-) 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 6268d860..53abf1e8 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 @@ -44,31 +44,34 @@ import org.springframework.context.annotation.Configuration; * @author Spencer Gibb */ @Configuration -@ConditionalOnClass(HealthIndicator.class) -@ConditionalOnBean(DiscoveryClient.class) -@ConditionalOnProperty(value = "spring.cloud.discovery.enabled", matchIfMissing = true) @AutoConfigureOrder(0) public class CommonsClientAutoConfiguration { - @Bean - @ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled", matchIfMissing = true) - public DiscoveryClientHealthIndicator discoveryClientHealthIndicator( - DiscoveryClient discoveryClient) { - return new DiscoveryClientHealthIndicator(discoveryClient); - } + @Configuration + @ConditionalOnClass(HealthIndicator.class) + @ConditionalOnBean(DiscoveryClient.class) + @ConditionalOnProperty(value = "spring.cloud.discovery.enabled", matchIfMissing = true) + protected static class DiscoveryLoadBalancerConfiguration { + @Bean + @ConditionalOnProperty(value = "spring.cloud.discovery.client.health-indicator.enabled", matchIfMissing = true) + public DiscoveryClientHealthIndicator discoveryClientHealthIndicator( + DiscoveryClient discoveryClient) { + return new DiscoveryClientHealthIndicator(discoveryClient); + } - @Bean - @ConditionalOnProperty(value = "spring.cloud.discovery.client.composite-indicator.enabled", matchIfMissing = true) - @ConditionalOnBean(DiscoveryHealthIndicator.class) - public DiscoveryCompositeHealthIndicator discoveryCompositeHealthIndicator( - HealthAggregator aggregator, List indicators) { - return new DiscoveryCompositeHealthIndicator(aggregator, indicators); - } + @Bean + @ConditionalOnProperty(value = "spring.cloud.discovery.client.composite-indicator.enabled", matchIfMissing = true) + @ConditionalOnBean(DiscoveryHealthIndicator.class) + public DiscoveryCompositeHealthIndicator discoveryCompositeHealthIndicator( + HealthAggregator aggregator, List indicators) { + return new DiscoveryCompositeHealthIndicator(aggregator, indicators); + } - @Bean - public HasFeatures commonsFeatures() { - return HasFeatures.abstractFeatures(DiscoveryClient.class, - LoadBalancerClient.class); + @Bean + public HasFeatures commonsFeatures() { + return HasFeatures.abstractFeatures(DiscoveryClient.class, + LoadBalancerClient.class); + } } @Configuration diff --git a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java index 73815cb3..c11877f7 100644 --- a/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java +++ b/spring-cloud-commons/src/test/java/org/springframework/cloud/client/CommonsClientAutoConfigurationTests.java @@ -43,7 +43,7 @@ public class CommonsClientAutoConfigurationTests { try (ConfigurableApplicationContext ctxt = init("spring.cloud.discovery.enabled=false")) { assertBeanNonExistant(ctxt, DiscoveryClientHealthIndicator.class); assertBeanNonExistant(ctxt, DiscoveryCompositeHealthIndicator.class); - assertBeanNonExistant(ctxt, FeaturesEndpoint.class); + assertThat(ctxt.getBean(FeaturesEndpoint.class), is(notNullValue())); // features actuator is independent of discovery assertBeanNonExistant(ctxt, HasFeatures.class); } }