From 4a6d8a30f0c99d80f91c4feb6d1fca2905807566 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 12 Dec 2014 12:29:32 -0700 Subject: [PATCH] removed circular dependency between EurekaClientAutoConfiguration and EurekaDiscoveryClientConfiguration that caused DiscoveryClientConfigServiceBootstrapConfiguration to fail. fixes gh-99 --- .../eureka/EurekaClientAutoConfiguration.java | 14 -------------- .../eureka/EurekaDiscoveryClientConfiguration.java | 10 ++++++++++ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java index 9e26b4d3..278d3eba 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration.java @@ -17,9 +17,6 @@ package org.springframework.cloud.netflix.eureka; import javax.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.actuate.metrics.reader.MetricReader; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -28,7 +25,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.netflix.appinfo.EurekaInstanceConfig; -import com.netflix.discovery.DiscoveryClient; import com.netflix.discovery.EurekaClientConfig; import com.netflix.discovery.converters.JsonXStream; import com.netflix.discovery.converters.XmlXStream; @@ -40,13 +36,9 @@ import com.netflix.discovery.converters.XmlXStream; @Configuration @EnableConfigurationProperties @ConditionalOnClass(EurekaClientConfig.class) -@ConditionalOnBean(DiscoveryClient.class) @ConditionalOnExpression("${eureka.client.enabled:true}") public class EurekaClientAutoConfiguration { - @Autowired - private DiscoveryClient discoveryClient; - @PostConstruct public void init() { XmlXStream.getInstance().setMarshallingStrategy( @@ -67,11 +59,5 @@ public class EurekaClientAutoConfiguration { return new EurekaInstanceConfigBean(); } - @Bean - @ConditionalOnMissingBean - @ConditionalOnBean(MetricReader.class) - public EurekaHealthIndicator eurekaHealthIndicator(EurekaInstanceConfig config, MetricReader metrics) { - return new EurekaHealthIndicator(discoveryClient, metrics, config); - } } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java index a935602f..6bc2747f 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/eureka/EurekaDiscoveryClientConfiguration.java @@ -17,10 +17,13 @@ package org.springframework.cloud.netflix.eureka; import javax.annotation.PreDestroy; +import com.netflix.appinfo.EurekaInstanceConfig; import com.netflix.appinfo.HealthCheckHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.metrics.reader.MetricReader; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -169,4 +172,11 @@ public class EurekaDiscoveryClientConfiguration implements SmartLifecycle, Order }; } + + @Bean + @ConditionalOnMissingBean + @ConditionalOnBean(MetricReader.class) + public EurekaHealthIndicator eurekaHealthIndicator(EurekaInstanceConfig config, MetricReader metrics) { + return new EurekaHealthIndicator(eurekaDiscoveryClient(), metrics, config); + } }