![JAR search and dependency download from the Maven repository](/logo.png)
org.zodiac.autoconfigure.bootstrap.loadbalancer.AsyncAppLoadBalancerAutoConfiguration Maven / Gradle / Ivy
package org.zodiac.autoconfigure.bootstrap.loadbalancer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.http.client.AsyncClientHttpRequestInterceptor;
import org.zodiac.autoconfigure.bootstrap.condition.ConditionalOnSpringCloudBootstrapDisabled;
import org.zodiac.core.bootstrap.loadbalancer.AppAsyncLoadBalancerInterceptor;
import org.zodiac.core.bootstrap.loadbalancer.AppAsyncRestTemplateCustomizer;
import org.zodiac.core.bootstrap.loadbalancer.AppLoadBalanced;
import org.zodiac.core.bootstrap.loadbalancer.AppLoadBalancerClient;
@SpringBootConfiguration
@ConditionalOnSpringCloudBootstrapDisabled
@ConditionalOnBean(value = {AppLoadBalancerClient.class})
@ConditionalOnClass(value = {org.springframework.web.client.AsyncRestTemplate.class})
public class AsyncAppLoadBalancerAutoConfiguration {
@SpringBootConfiguration
static class AsyncRestTemplateCustomizerConfig {
@AppLoadBalanced
@Autowired(required = false)
private List restTemplates = Collections.emptyList();
@Bean
protected SmartInitializingSingleton
loadBalancedAsyncRestTemplateInitializer(final List customizers) {
return () -> {
for (org.springframework.web.client.AsyncRestTemplate restTemplate : AsyncRestTemplateCustomizerConfig.this.restTemplates) {
for (AppAsyncRestTemplateCustomizer customizer : customizers) {
customizer.customize(restTemplate);
}
}
};
}
}
@SpringBootConfiguration
static class LoadBalancerInterceptorConfig {
@Bean
protected AppAsyncLoadBalancerInterceptor
asyncLoadBalancerInterceptor(AppLoadBalancerClient loadBalancerClient) {
return new AppAsyncLoadBalancerInterceptor(loadBalancerClient);
}
@Bean
protected AppAsyncRestTemplateCustomizer
asyncRestTemplateCustomizer(final AppAsyncLoadBalancerInterceptor loadBalancerInterceptor) {
return restTemplate -> {
List list = new ArrayList<>(restTemplate.getInterceptors());
list.add(loadBalancerInterceptor);
restTemplate.setInterceptors(list);
};
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy