diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java index a2cb39cec..2a1101a6f 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java @@ -37,6 +37,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.retry.support.RetryTemplate; import org.springframework.web.client.RestTemplate; @@ -49,6 +50,7 @@ * @author Will Tran * @author Gang Li * @author Olga Maciaszek-Sharma + * @author Henning Pöttker */ @AutoConfiguration @Conditional(BlockingRestClassesPresentCondition.class) @@ -86,7 +88,7 @@ static class DeferringLoadBalancerInterceptorConfig { @Bean @ConditionalOnMissingBean - public DeferringLoadBalancerInterceptor deferringLoadBalancerInterceptor( + public static DeferringLoadBalancerInterceptor deferringLoadBalancerInterceptor( ObjectProvider loadBalancerInterceptorObjectProvider) { return new DeferringLoadBalancerInterceptor(loadBalancerInterceptorObjectProvider); } @@ -94,8 +96,8 @@ public DeferringLoadBalancerInterceptor deferringLoadBalancerInterceptor( @Bean @ConditionalOnBean(DeferringLoadBalancerInterceptor.class) @ConditionalOnMissingBean - LoadBalancerRestClientBuilderBeanPostProcessor lbRestClientPostProcessor( - DeferringLoadBalancerInterceptor loadBalancerInterceptor, ApplicationContext context) { + static LoadBalancerRestClientBuilderBeanPostProcessor lbRestClientPostProcessor( + @Lazy DeferringLoadBalancerInterceptor loadBalancerInterceptor, ApplicationContext context) { return new LoadBalancerRestClientBuilderBeanPostProcessor(loadBalancerInterceptor, context); } diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.java index 8e61f33c0..247e577f0 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Primary; import org.springframework.web.reactive.function.client.WebClient; @@ -39,6 +40,7 @@ * beans. * * @author Olga Maciaszek-Sharma + * @author Henning Pöttker * @since 2.2.0 */ @Configuration(proxyBeanMethods = false) @@ -47,8 +49,8 @@ public class LoadBalancerBeanPostProcessorAutoConfiguration { @Bean - public LoadBalancerWebClientBuilderBeanPostProcessor loadBalancerWebClientBuilderBeanPostProcessor( - DeferringLoadBalancerExchangeFilterFunction deferringExchangeFilterFunction, ApplicationContext context) { + public static LoadBalancerWebClientBuilderBeanPostProcessor loadBalancerWebClientBuilderBeanPostProcessor( + @Lazy DeferringLoadBalancerExchangeFilterFunction deferringExchangeFilterFunction, ApplicationContext context) { return new LoadBalancerWebClientBuilderBeanPostProcessor(deferringExchangeFilterFunction, context); } @@ -58,7 +60,7 @@ protected static class ReactorDeferringLoadBalancerFilterConfig { @Bean @Primary - DeferringLoadBalancerExchangeFilterFunction reactorDeferringLoadBalancerExchangeFilterFunction( + static DeferringLoadBalancerExchangeFilterFunction reactorDeferringLoadBalancerExchangeFilterFunction( ObjectProvider exchangeFilterFunctionProvider) { return new DeferringLoadBalancerExchangeFilterFunction<>(exchangeFilterFunctionProvider); }