diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfiguration.java index 02ef99ffa..8be59489e 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfiguration.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfiguration.java @@ -21,6 +21,7 @@ import com.netflix.discovery.shared.transport.EurekaHttpClient; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.AllNestedConditions; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -39,6 +40,7 @@ import org.springframework.cloud.netflix.eureka.http.RestTemplateTransportClient import org.springframework.cloud.netflix.eureka.http.WebClientEurekaHttpClient; import org.springframework.cloud.netflix.eureka.http.WebClientTransportClientFactory; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.lang.Nullable; @@ -51,7 +53,7 @@ import org.springframework.web.reactive.function.client.WebClient; * @author Dave Syer */ @ConditionalOnClass(ConfigServicePropertySourceLocator.class) -@ConditionalOnProperty({ "spring.cloud.config.discovery.enabled", "eureka.client.enabled" }) +@Conditional(EurekaConfigServerBootstrapConfiguration.EurekaConfigServerBootstrapCondition.class) @Configuration(proxyBeanMethods = false) @EnableConfigurationProperties public class EurekaConfigServerBootstrapConfiguration { @@ -102,4 +104,22 @@ public class EurekaConfigServerBootstrapConfiguration { } + static class EurekaConfigServerBootstrapCondition extends AllNestedConditions { + + EurekaConfigServerBootstrapCondition() { + super(ConfigurationPhase.REGISTER_BEAN); + } + + @ConditionalOnProperty("spring.cloud.config.discovery.enabled") + static class OnCloudConfigProperty { + + } + + @ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true) + static class OnEurekaClient { + + } + + } + } diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfigurationTests.java index 7ea161182..e359f56e9 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfigurationTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/config/EurekaConfigServerBootstrapConfigurationTests.java @@ -73,8 +73,8 @@ public class EurekaConfigServerBootstrapConfigurationTests { new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(EurekaConfigServerBootstrapConfiguration.class)) .withPropertyValues("spring.cloud.config.discovery.enabled=true").run(context -> { - assertEurekaBeansNotPresent(context); - }); + assertEurekaBeansPresent(context); + }); } @Test