diff --git a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/loadbalancer/LoadBalancerEurekaAutoConfiguration.java b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/loadbalancer/LoadBalancerEurekaAutoConfiguration.java index 1622059ad..97cfea726 100644 --- a/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/loadbalancer/LoadBalancerEurekaAutoConfiguration.java +++ b/spring-cloud-netflix-eureka-client/src/main/java/org/springframework/cloud/netflix/eureka/loadbalancer/LoadBalancerEurekaAutoConfiguration.java @@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.eureka.loadbalancer; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientConfigurationRegistrar; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients; @@ -34,9 +35,10 @@ import org.springframework.core.env.Environment; * @see EurekaLoadBalancerClientConfiguration */ @Configuration(proxyBeanMethods = false) -@EnableConfigurationProperties(EurekaLoadBalancerProperties.class) +@EnableConfigurationProperties @ConditionalOnClass(LoadBalancerClientConfigurationRegistrar.class) @LoadBalancerClients(defaultConfiguration = EurekaLoadBalancerClientConfiguration.class) +@ConditionalOnProperty(name = "eureka.client.enabled", matchIfMissing = true) public class LoadBalancerEurekaAutoConfiguration { /** diff --git a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/loadbalancer/EurekaLoadBalancerClientConfigurationTests.java b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/loadbalancer/EurekaLoadBalancerClientConfigurationTests.java index eeb31cbd3..3cc9eea23 100644 --- a/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/loadbalancer/EurekaLoadBalancerClientConfigurationTests.java +++ b/spring-cloud-netflix-eureka-client/src/test/java/org/springframework/cloud/netflix/eureka/loadbalancer/EurekaLoadBalancerClientConfigurationTests.java @@ -18,6 +18,8 @@ package org.springframework.cloud.netflix.eureka.loadbalancer; import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.cloud.commons.util.InetUtils; import org.springframework.cloud.commons.util.InetUtilsProperties; import org.springframework.cloud.loadbalancer.config.LoadBalancerZoneConfig; @@ -72,4 +74,16 @@ class EurekaLoadBalancerClientConfigurationTests { assertThat(zoneConfig.getZone()).isEqualTo("is.a.test.com"); } + @Test + public void disabledViaProperty() { + new ApplicationContextRunner() + .withConfiguration( + AutoConfigurations.of(LoadBalancerEurekaAutoConfiguration.class)) + .withPropertyValues("eureka.client.enabled=false").run(context -> { + assertThat(context) + .doesNotHaveBean(EurekaLoadBalancerProperties.class); + assertThat(context).doesNotHaveBean(LoadBalancerZoneConfig.class); + }); + } + }