Refactor eager-load PR. Add docs.
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user