Fix LoadBalancerWebClientHttpServiceGroupConfigurer implementation. Refactor.

Signed-off-by: Olga Maciaszek-Sharma <olga.maciaszek-sharma@broadcom.com>
This commit is contained in:
Olga Maciaszek-Sharma
2025-05-13 16:07:57 +02:00
parent c42a0623a1
commit 5f0d7c0719
3 changed files with 10 additions and 12 deletions

View File

@@ -18,8 +18,6 @@ package org.springframework.cloud.client.loadbalancer;
import java.net.URI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jspecify.annotations.NonNull;
import org.springframework.beans.factory.ObjectProvider;
@@ -50,11 +48,9 @@ import static org.springframework.cloud.client.loadbalancer.LoadBalancerUriTools
*/
public class LoadBalancerRestClientHttpServiceGroupConfigurer implements RestClientHttpServiceGroupConfigurer {
// Make sure Boot's customisers run before
// Make sure Boot's configurers run before
private static final int ORDER = 10;
private static final Log LOG = LogFactory.getLog(LoadBalancerRestClientHttpServiceGroupConfigurer.class);
private final ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerClientFactory;
private final SingletonSupplier<DeferringLoadBalancerInterceptor> loadBalancerInterceptorSupplier;

View File

@@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.http.client.service.HttpClientServiceProperties;
import org.springframework.boot.autoconfigure.http.client.reactive.service.ReactiveHttpClientServiceProperties;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
@@ -70,11 +70,11 @@ public class LoadBalancerBeanPostProcessorAutoConfiguration {
}
@Bean
@ConditionalOnBean({ HttpClientServiceProperties.class, ReactiveLoadBalancer.Factory.class })
@ConditionalOnBean({ ReactiveHttpClientServiceProperties.class, ReactiveLoadBalancer.Factory.class })
@ConditionalOnMissingBean(LoadBalancerWebClientHttpServiceGroupConfigurer.class)
LoadBalancerWebClientHttpServiceGroupConfigurer loadBalancerWebClientHttpServiceGroupConfigurer(
ObjectProvider<DeferringLoadBalancerExchangeFilterFunction<LoadBalancedExchangeFilterFunction>> deferringExchangeFilterFunction,
HttpClientServiceProperties properties,
ReactiveHttpClientServiceProperties properties,
ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerFactory) {
return new LoadBalancerWebClientHttpServiceGroupConfigurer(deferringExchangeFilterFunction, properties,
loadBalancerFactory);

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.client.loadbalancer.reactive;
import java.net.URI;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.http.client.reactive.service.ReactiveHttpClientServiceProperties;
import org.springframework.boot.autoconfigure.http.client.service.HttpClientServiceProperties;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties;
@@ -47,18 +48,18 @@ import static org.springframework.cloud.client.loadbalancer.LoadBalancerUriTools
*/
public class LoadBalancerWebClientHttpServiceGroupConfigurer implements WebClientHttpServiceGroupConfigurer {
// Make sure Boot's customisers run before
// Make sure Boot's configurers run before
private static final int ORDER = 10;
private final ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerClientFactory;
private final SingletonSupplier<DeferringLoadBalancerExchangeFilterFunction<LoadBalancedExchangeFilterFunction>> loadBalancerFilterFunctionSupplier;
private final HttpClientServiceProperties clientServiceProperties;
private final ReactiveHttpClientServiceProperties clientServiceProperties;
public LoadBalancerWebClientHttpServiceGroupConfigurer(
ObjectProvider<DeferringLoadBalancerExchangeFilterFunction<LoadBalancedExchangeFilterFunction>> exchangeFilterFunctionProvider,
HttpClientServiceProperties clientServiceProperties,
ReactiveHttpClientServiceProperties clientServiceProperties,
ReactiveLoadBalancer.Factory<ServiceInstance> loadBalancerClientFactory) {
this.loadBalancerFilterFunctionSupplier = SingletonSupplier
.ofNullable(exchangeFilterFunctionProvider.getIfAvailable());
@@ -76,7 +77,8 @@ public class LoadBalancerWebClientHttpServiceGroupConfigurer implements WebClien
}
groups.configureClient((group, builder) -> {
String groupName = group.name();
HttpClientServiceProperties.Group groupProperties = clientServiceProperties.getGroup().get(groupName);
ReactiveHttpClientServiceProperties.Group groupProperties = clientServiceProperties.getGroup()
.get(groupName);
if (groupProperties == null || groupProperties.getBaseUrl() == null) {
URI baseUrl = constructBaseUrl(groupName);
builder.baseUrl(String.valueOf(baseUrl));