Skip to content

Commit f2504bb

Browse files
committed
Protects RestTemplate and RestClient related beans with ConditionalOnClass
Changes required for Boot 4.0 restructuring
1 parent 6b54589 commit f2504bb

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
3232
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
3333
import org.springframework.boot.context.properties.EnableConfigurationProperties;
34+
import org.springframework.boot.restclient.RestTemplateBuilder;
3435
import org.springframework.boot.restclient.autoconfigure.service.HttpClientServiceProperties;
3536
import org.springframework.cloud.client.ServiceInstance;
3637
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer;
@@ -102,6 +103,19 @@ static LoadBalancerRestClientBuilderBeanPostProcessor<DeferringLoadBalancerInter
102103
return new LoadBalancerRestClientBuilderBeanPostProcessor<>(loadBalancerInterceptorProvider, context);
103104
}
104105

106+
}
107+
108+
@Configuration(proxyBeanMethods = false)
109+
@ConditionalOnClass(RestTemplateBuilder.class)
110+
static class DeferringLoadBalancerInterceptorRestTemplateBuilderConfig {
111+
112+
@Bean
113+
@ConditionalOnMissingBean
114+
public static DeferringLoadBalancerInterceptor deferringLoadBalancerInterceptor(
115+
ObjectProvider<BlockingLoadBalancerInterceptor> loadBalancerInterceptorObjectProvider) {
116+
return new DeferringLoadBalancerInterceptor(loadBalancerInterceptorObjectProvider);
117+
}
118+
105119
@Bean
106120
@ConditionalOnBean(DeferringLoadBalancerInterceptor.class)
107121
@ConditionalOnMissingBean(LoadBalancerRestTemplateBuilderBeanPostProcessor.class)
@@ -111,6 +125,19 @@ static LoadBalancerRestTemplateBuilderBeanPostProcessor<DeferringLoadBalancerInt
111125
return new LoadBalancerRestTemplateBuilderBeanPostProcessor<>(loadBalancerInterceptorProvider, context);
112126
}
113127

128+
}
129+
130+
@Configuration(proxyBeanMethods = false)
131+
@ConditionalOnClass(HttpClientServiceProperties.class)
132+
static class DeferringLoadBalancerInterceptorHttpClientConfig {
133+
134+
@Bean
135+
@ConditionalOnMissingBean
136+
public static DeferringLoadBalancerInterceptor deferringLoadBalancerInterceptor(
137+
ObjectProvider<BlockingLoadBalancerInterceptor> loadBalancerInterceptorObjectProvider) {
138+
return new DeferringLoadBalancerInterceptor(loadBalancerInterceptorObjectProvider);
139+
}
140+
114141
@Bean
115142
@ConditionalOnBean({ HttpClientServiceProperties.class, ReactiveLoadBalancer.Factory.class })
116143
@ConditionalOnMissingBean(LoadBalancerRestClientHttpServiceGroupConfigurer.class)

spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerBeanPostProcessorAutoConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,13 @@ static DeferringLoadBalancerExchangeFilterFunction<LoadBalancedExchangeFilterFun
6868
return new DeferringLoadBalancerExchangeFilterFunction<>(exchangeFilterFunctionProvider);
6969
}
7070

71+
}
72+
73+
@Configuration(proxyBeanMethods = false)
74+
@ConditionalOnClass(ReactiveHttpClientServiceProperties.class)
75+
@ConditionalOnBean(ReactiveLoadBalancer.Factory.class)
76+
protected static class ReactorDeferringLoadBalancerFilterHttpClientConfig {
77+
7178
@Bean
7279
@ConditionalOnBean({ ReactiveHttpClientServiceProperties.class, ReactiveLoadBalancer.Factory.class })
7380
@ConditionalOnMissingBean(LoadBalancerWebClientHttpServiceGroupConfigurer.class)

0 commit comments

Comments
 (0)