Skip to content

Commit 0fd812d

Browse files
committed
Switch to lazy access for HttpInterfaceClientsProperties.
1 parent 4e7c9a4 commit 0fd812d

File tree

4 files changed

+30
-22
lines changed

4 files changed

+30
-22
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/HttpInterfaceClientsAutoConfiguration.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.autoconfigure.interfaceclients.http;
1818

19+
import org.springframework.beans.factory.ObjectProvider;
1920
import org.springframework.boot.autoconfigure.AutoConfiguration;
2021
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2122
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -65,8 +66,8 @@ protected static class RestClientAdapterProviderConfiguration {
6566
@ConditionalOnBean(RestClient.Builder.class)
6667
@ConditionalOnMissingBean
6768
HttpExchangeAdapterProvider restClientAdapterProvider(RestClient.Builder restClientBuilder,
68-
HttpInterfaceClientsProperties properties) {
69-
return new RestClientAdapterProvider(restClientBuilder, properties);
69+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
70+
return new RestClientAdapterProvider(restClientBuilder, propertiesProvider);
7071
}
7172

7273
}
@@ -81,8 +82,8 @@ protected static class RestTemplateAdapterProviderConfiguration {
8182
@ConditionalOnMissingBean
8283
@ConditionalOnProperty(value = "spring.interfaceclients.resttemplate.enabled", havingValue = "true")
8384
HttpExchangeAdapterProvider restTemplateAdapterProvider(RestTemplateBuilder restTemplateBuilder,
84-
HttpInterfaceClientsProperties properties) {
85-
return new RestTemplateAdapterProvider(restTemplateBuilder, properties);
85+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
86+
return new RestTemplateAdapterProvider(restTemplateBuilder, propertiesProvider);
8687
}
8788

8889
}
@@ -96,8 +97,8 @@ protected static class WebClientAdapterProviderConfiguration {
9697
@ConditionalOnBean(WebClient.Builder.class)
9798
@ConditionalOnMissingBean
9899
HttpExchangeAdapterProvider webClientAdapterProvider(WebClient.Builder webClientBuilder,
99-
HttpInterfaceClientsProperties properties) {
100-
return new WebClientAdapterProvider(webClientBuilder, properties);
100+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
101+
return new WebClientAdapterProvider(webClientBuilder, propertiesProvider);
101102
}
102103

103104
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/RestClientAdapterProvider.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.commons.logging.LogFactory;
2121

2222
import org.springframework.beans.factory.ListableBeanFactory;
23+
import org.springframework.beans.factory.ObjectProvider;
2324
import org.springframework.web.client.RestClient;
2425
import org.springframework.web.client.support.RestClientAdapter;
2526
import org.springframework.web.service.invoker.HttpExchangeAdapter;
@@ -33,11 +34,12 @@ public class RestClientAdapterProvider implements HttpExchangeAdapterProvider {
3334

3435
private final RestClient.Builder builder;
3536

36-
private final HttpInterfaceClientsProperties properties;
37+
private final ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider;
3738

38-
public RestClientAdapterProvider(RestClient.Builder builder, HttpInterfaceClientsProperties properties) {
39+
public RestClientAdapterProvider(RestClient.Builder builder,
40+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
3941
this.builder = builder;
40-
this.properties = properties;
42+
this.propertiesProvider = propertiesProvider;
4143
}
4244

4345
@Override
@@ -47,18 +49,19 @@ public HttpExchangeAdapter get(ListableBeanFactory beanFactory, String clientId)
4749
if (userProvidedRestClient != null) {
4850
return RestClientAdapter.create(userProvidedRestClient);
4951
}
52+
HttpInterfaceClientsProperties properties = this.propertiesProvider.getObject();
5053
RestClient.Builder userProvidedRestClientBuilder = QualifiedBeanProvider.qualifiedBean(beanFactory,
5154
RestClient.Builder.class, clientId);
5255
if (userProvidedRestClientBuilder != null) {
5356
// TODO: should we do this or get it from the user?
54-
userProvidedRestClientBuilder.baseUrl(this.properties.getProperties(clientId).getBaseUrl());
57+
userProvidedRestClientBuilder.baseUrl(properties.getProperties(clientId).getBaseUrl());
5558
return RestClientAdapter.create(userProvidedRestClientBuilder.build());
5659
}
5760
// create a RestClientAdapter bean with default implementation
5861
if (logger.isDebugEnabled()) {
5962
logger.debug("Creating RestClientAdapter for '" + clientId + "'");
6063
}
61-
RestClient restClient = this.builder.baseUrl(this.properties.getProperties(clientId).getBaseUrl()).build();
64+
RestClient restClient = this.builder.baseUrl(properties.getProperties(clientId).getBaseUrl()).build();
6265
return RestClientAdapter.create(restClient);
6366
}
6467

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/RestTemplateAdapterProvider.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.commons.logging.LogFactory;
2121

2222
import org.springframework.beans.factory.ListableBeanFactory;
23+
import org.springframework.beans.factory.ObjectProvider;
2324
import org.springframework.boot.web.client.RestTemplateBuilder;
2425
import org.springframework.web.client.RestTemplate;
2526
import org.springframework.web.client.support.RestTemplateAdapter;
@@ -34,12 +35,12 @@ public class RestTemplateAdapterProvider implements HttpExchangeAdapterProvider
3435

3536
private final RestTemplateBuilder restTemplateBuilder;
3637

37-
private final HttpInterfaceClientsProperties properties;
38+
private final ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider;
3839

3940
public RestTemplateAdapterProvider(RestTemplateBuilder restTemplateBuilder,
40-
HttpInterfaceClientsProperties properties) {
41+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
4142
this.restTemplateBuilder = restTemplateBuilder;
42-
this.properties = properties;
43+
this.propertiesProvider = propertiesProvider;
4344
}
4445

4546
@Override
@@ -49,19 +50,19 @@ public HttpExchangeAdapter get(ListableBeanFactory beanFactory, String clientId)
4950
if (userProvidedRestTemplate != null) {
5051
return RestTemplateAdapter.create(userProvidedRestTemplate);
5152
}
53+
HttpInterfaceClientsProperties properties = this.propertiesProvider.getObject();
5254
RestTemplateBuilder userProvidedRestTemplateBuilder = QualifiedBeanProvider.qualifiedBean(beanFactory,
5355
RestTemplateBuilder.class, clientId);
5456
if (userProvidedRestTemplateBuilder != null) {
5557
// TODO: should we do this or get it from the user?
56-
userProvidedRestTemplateBuilder.rootUri(this.properties.getProperties(clientId).getBaseUrl());
58+
userProvidedRestTemplateBuilder.rootUri(properties.getProperties(clientId).getBaseUrl());
5759
return RestTemplateAdapter.create(userProvidedRestTemplateBuilder.build());
5860
}
5961
// create a RestTemplateAdapter bean with default implementation
6062
if (logger.isDebugEnabled()) {
6163
logger.debug("Creating RestTemplateAdapter for '" + clientId + "'");
6264
}
63-
RestTemplate restTemplate = this.restTemplateBuilder
64-
.rootUri(this.properties.getProperties(clientId).getBaseUrl())
65+
RestTemplate restTemplate = this.restTemplateBuilder.rootUri(properties.getProperties(clientId).getBaseUrl())
6566
.build();
6667
return RestTemplateAdapter.create(restTemplate);
6768
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/interfaceclients/http/WebClientAdapterProvider.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.commons.logging.LogFactory;
2121

2222
import org.springframework.beans.factory.ListableBeanFactory;
23+
import org.springframework.beans.factory.ObjectProvider;
2324
import org.springframework.web.reactive.function.client.WebClient;
2425
import org.springframework.web.reactive.function.client.support.WebClientAdapter;
2526
import org.springframework.web.service.invoker.HttpExchangeAdapter;
@@ -33,11 +34,12 @@ public class WebClientAdapterProvider implements HttpExchangeAdapterProvider {
3334

3435
private final WebClient.Builder builder;
3536

36-
private final HttpInterfaceClientsProperties properties;
37+
private final ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider;
3738

38-
public WebClientAdapterProvider(WebClient.Builder builder, HttpInterfaceClientsProperties properties) {
39+
public WebClientAdapterProvider(WebClient.Builder builder,
40+
ObjectProvider<HttpInterfaceClientsProperties> propertiesProvider) {
3941
this.builder = builder;
40-
this.properties = properties;
42+
this.propertiesProvider = propertiesProvider;
4143
}
4244

4345
@Override
@@ -46,18 +48,19 @@ public HttpExchangeAdapter get(ListableBeanFactory beanFactory, String clientId)
4648
if (userProvidedWebClient != null) {
4749
return WebClientAdapter.create(userProvidedWebClient);
4850
}
51+
HttpInterfaceClientsProperties properties = this.propertiesProvider.getObject();
4952
WebClient.Builder userProvidedWebClientBuilder = QualifiedBeanProvider.qualifiedBean(beanFactory,
5053
WebClient.Builder.class, clientId);
5154
if (userProvidedWebClientBuilder != null) {
5255
// TODO: should we do this or get it from the user?
53-
userProvidedWebClientBuilder.baseUrl(this.properties.getProperties(clientId).getBaseUrl());
56+
userProvidedWebClientBuilder.baseUrl(properties.getProperties(clientId).getBaseUrl());
5457
return WebClientAdapter.create(userProvidedWebClientBuilder.build());
5558
}
5659
// create a WebClientAdapter bean with default implementation
5760
if (logger.isDebugEnabled()) {
5861
logger.debug("Creating WebClientAdapter for '" + clientId + "'");
5962
}
60-
WebClient webClient = this.builder.baseUrl(this.properties.getProperties(clientId).getBaseUrl()).build();
63+
WebClient webClient = this.builder.baseUrl(properties.getProperties(clientId).getBaseUrl()).build();
6164
return WebClientAdapter.create(webClient);
6265
}
6366

0 commit comments

Comments
 (0)