diff --git a/docs/src/main/asciidoc/_configprops.adoc b/docs/src/main/asciidoc/_configprops.adoc index dfb2a311..1beb1d7d 100644 --- a/docs/src/main/asciidoc/_configprops.adoc +++ b/docs/src/main/asciidoc/_configprops.adoc @@ -31,6 +31,7 @@ |spring.cloud.loadbalancer.cache.ttl | `+++35s+++` | Time To Live - time counted from writing of the record, after which cache entries are expired, expressed as a {@link Duration}. The property {@link String} has to be in keeping with the appropriate syntax as specified in Spring Boot StringToDurationConverter. @see StringToDurationConverter.java |spring.cloud.loadbalancer.clients | | |spring.cloud.loadbalancer.configurations | `+++default+++` | Enables a predefined LoadBalancer configuration. +|spring.cloud.loadbalancer.eager-load.clients | | Names of the clients. |spring.cloud.loadbalancer.enabled | `+++true+++` | Enables Spring Cloud LoadBalancer. |spring.cloud.loadbalancer.health-check.initial-delay | `+++0+++` | Initial delay value for the HealthCheck scheduler. |spring.cloud.loadbalancer.health-check.interval | `+++25s+++` | Interval for rerunning the HealthCheck scheduler. @@ -59,8 +60,6 @@ |spring.cloud.loadbalancer.sticky-session.instance-id-cookie-name | `+++sc-lb-instance-id+++` | The name of the cookie holding the preferred instance id. |spring.cloud.loadbalancer.x-forwarded.enabled | `+++false+++` | To Enable X-Forwarded Headers. |spring.cloud.loadbalancer.zone | | Spring Cloud LoadBalancer zone. -|spring.cloud.loadbalancer.eager-load.enabled| | Enables eager load of client context. -|spring.cloud.loadbalancer.eager-load.clients | | |spring.cloud.refresh.additional-property-sources-to-retain | | Additional property sources to retain during a refresh. Typically only system property sources are retained. This property allows property sources, such as property sources created by EnvironmentPostProcessors to be retained as well. |spring.cloud.refresh.enabled | `+++true+++` | Enables autoconfiguration for the refresh scope and associated features. |spring.cloud.refresh.extra-refreshable | `+++true+++` | Additional class names for beans to post process into refresh scope. diff --git a/docs/src/main/asciidoc/spring-cloud-commons.adoc b/docs/src/main/asciidoc/spring-cloud-commons.adoc index fbd29e52..b4a9ffda 100644 --- a/docs/src/main/asciidoc/spring-cloud-commons.adoc +++ b/docs/src/main/asciidoc/spring-cloud-commons.adoc @@ -853,6 +853,12 @@ that retrieves available instances from Service Discovery using a <>. diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadbalancerEagerLoadProperties.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerEagerLoadProperties.java similarity index 95% rename from spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadbalancerEagerLoadProperties.java rename to spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerEagerLoadProperties.java index eb75753e..d99c0d8e 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadbalancerEagerLoadProperties.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerEagerLoadProperties.java @@ -25,7 +25,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; * @author Andrii Bohutskyi */ @ConfigurationProperties("spring.cloud.loadbalancer.eager-load") -public class LoadbalancerEagerLoadProperties { +public class LoadBalancerEagerLoadProperties { private List clients = new ArrayList<>(); @@ -36,4 +36,5 @@ public class LoadbalancerEagerLoadProperties { public void setClients(List clients) { this.clients = clients; } + } diff --git a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/LoadBalancerAutoConfiguration.java b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/LoadBalancerAutoConfiguration.java index 14649453..c4f4eeed 100644 --- a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/LoadBalancerAutoConfiguration.java +++ b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/LoadBalancerAutoConfiguration.java @@ -25,7 +25,7 @@ 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.client.loadbalancer.LoadBalancerClientsProperties; -import org.springframework.cloud.client.loadbalancer.LoadbalancerEagerLoadProperties; +import org.springframework.cloud.client.loadbalancer.LoadBalancerEagerLoadProperties; import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration; import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerClientAutoConfiguration; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientSpecification; @@ -42,7 +42,7 @@ import org.springframework.core.env.Environment; */ @Configuration(proxyBeanMethods = false) @LoadBalancerClients -@EnableConfigurationProperties(LoadBalancerClientsProperties.class) +@EnableConfigurationProperties({ LoadBalancerClientsProperties.class, LoadBalancerEagerLoadProperties.class }) @AutoConfigureBefore({ ReactorLoadBalancerClientAutoConfiguration.class, LoadBalancerBeanPostProcessorAutoConfiguration.class }) @ConditionalOnProperty(value = "spring.cloud.loadbalancer.enabled", havingValue = "true", matchIfMissing = true) @@ -69,9 +69,9 @@ public class LoadBalancerAutoConfiguration { } @Bean - @ConditionalOnProperty(value = "spring.cloud.loadbalancer.eager-load.enabled", havingValue = "true") public LoadBalancerEagerContextInitializer loadBalancerEagerContextInitializer( - LoadBalancerClientFactory clientFactory, LoadbalancerEagerLoadProperties properties) { + LoadBalancerClientFactory clientFactory, LoadBalancerEagerLoadProperties properties) { return new LoadBalancerEagerContextInitializer(clientFactory, properties.getClients()); } + } diff --git a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java index 50f962c5..7a72cb68 100644 --- a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java +++ b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializer.java @@ -16,11 +16,11 @@ package org.springframework.cloud.loadbalancer.support; +import java.util.List; + import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.ApplicationListener; -import java.util.List; - /** * @author Andrii Bohutskyi */ @@ -37,11 +37,7 @@ public class LoadBalancerEagerContextInitializer implements ApplicationListener< @Override public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { - warnUpFunction(); - } - - private void warnUpFunction() { - this.serviceNames.forEach(factory::getInstance); + serviceNames.forEach(factory::getInstance); } } diff --git a/spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json index c8b3fe85..302b4228 100644 --- a/spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -34,11 +34,6 @@ "description": "Enables Spring Cloud LoadBalancer.", "type": "java.lang.Boolean" }, - { - "name": "spring.cloud.loadbalancer.eager-load.enabled", - "description": "Enables eager load of clients context.", - "type": "java.lang.Boolean" - }, { "name": "spring.cloud.loadbalancer.eager-load.clients", "description": "Names of the clients.", diff --git a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializerTest.java b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializerTest.java index 2b30ee57..67ebc080 100644 --- a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializerTest.java +++ b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/support/LoadBalancerEagerContextInitializerTest.java @@ -16,29 +16,25 @@ package org.springframework.cloud.loadbalancer.support; +import java.util.Collections; +import java.util.concurrent.atomic.AtomicInteger; + import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient; import org.springframework.cloud.loadbalancer.config.LoadBalancerAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import java.util.Collections; -import java.util.concurrent.atomic.AtomicInteger; import static org.assertj.core.api.Assertions.assertThat; /** * @author Andrii Bohutskyi */ -@ExtendWith(SpringExtension.class) -@SpringBootTest(classes = { - LoadBalancerAutoConfiguration.class, - LoadBalancerEagerContextInitializerTest.SomeTestConfig.class -}) +@SpringBootTest( + classes = { LoadBalancerAutoConfiguration.class, LoadBalancerEagerContextInitializerTest.SomeTestConfig.class }) class LoadBalancerEagerContextInitializerTest { private static final String LOAD_BALANCER = "testLoadBalancer"; @@ -58,7 +54,7 @@ class LoadBalancerEagerContextInitializerTest { static class SomeTestConfig { @Bean - public LoadBalancerEagerContextInitializer loadBalancerEagerContextInitializer( + public LoadBalancerEagerContextInitializer testLoadBalancerEagerContextInitializer( LoadBalancerClientFactory factory) { return new LoadBalancerEagerContextInitializer(factory, Collections.singletonList(LOAD_BALANCER)); } @@ -78,12 +74,14 @@ class LoadBalancerEagerContextInitializerTest { private static final AtomicInteger COUNT = new AtomicInteger(); - public LoadBalancerCounter() { + LoadBalancerCounter() { COUNT.incrementAndGet(); } public static int getCount() { return COUNT.get(); } + } + }