Install FeaturesEndpoint even if discovery disabled.

FeaturesEndpoint does not at all require discovery.

 fixes gh-167
This commit is contained in:
Spencer Gibb
2017-01-26 10:29:35 -07:00
parent 941275ded2
commit f60dbeb5e6
2 changed files with 24 additions and 21 deletions

View File

@@ -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<DiscoveryHealthIndicator> 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<DiscoveryHealthIndicator> 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

View File

@@ -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);
}
}