Skip to content

Commit 7d39e00

Browse files
committed
Configure ReactorClientHttpConnectorBuilder with context's ReactorResourceFactory
Signed-off-by: Dmytro Nosan <[email protected]>
1 parent b209bc1 commit 7d39e00

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/http/client/reactive/ClientHttpConnectorAutoConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,16 @@
3131
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3232
import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder;
3333
import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings;
34+
import org.springframework.boot.http.client.reactive.ReactorClientHttpConnectorBuilder;
3435
import org.springframework.boot.ssl.SslBundles;
3536
import org.springframework.boot.util.LambdaSafe;
3637
import org.springframework.context.annotation.Bean;
3738
import org.springframework.context.annotation.Conditional;
3839
import org.springframework.context.annotation.Configuration;
3940
import org.springframework.context.annotation.Import;
4041
import org.springframework.context.annotation.Lazy;
42+
import org.springframework.core.annotation.Order;
43+
import org.springframework.http.client.ReactorResourceFactory;
4144
import org.springframework.http.client.reactive.ClientHttpConnector;
4245

4346
/**
@@ -103,6 +106,13 @@ ClientHttpConnector clientHttpConnector(ClientHttpConnectorBuilder<?> clientHttp
103106
@Import(ReactorNettyConfigurations.ReactorResourceFactoryConfiguration.class)
104107
static class ReactorNetty {
105108

109+
@Bean
110+
@Order(0)
111+
ClientHttpConnectorBuilderCustomizer<ReactorClientHttpConnectorBuilder> reactorResourceFactoryClientHttpConnectorBuilderCustomizer(
112+
ReactorResourceFactory reactorResourceFactory) {
113+
return (builder) -> builder.withReactorResourceFactory(reactorResourceFactory);
114+
}
115+
106116
}
107117

108118
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorAutoConfiguration.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,10 @@
2525
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2727
import org.springframework.boot.autoconfigure.http.client.reactive.ClientHttpConnectorBuilderCustomizer;
28-
import org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations.ReactorResourceFactoryConfiguration;
2928
import org.springframework.boot.http.client.reactive.ReactorClientHttpConnectorBuilder;
3029
import org.springframework.context.annotation.Bean;
3130
import org.springframework.context.annotation.Configuration;
32-
import org.springframework.context.annotation.Import;
3331
import org.springframework.core.annotation.Order;
34-
import org.springframework.http.client.ReactorResourceFactory;
3532
import org.springframework.web.reactive.function.client.WebClient;
3633

3734
/**
@@ -52,14 +49,12 @@ public class ClientHttpConnectorAutoConfiguration {
5249

5350
@Configuration(proxyBeanMethods = false)
5451
@ConditionalOnClass(HttpClient.class)
55-
@Import(ReactorResourceFactoryConfiguration.class)
5652
@SuppressWarnings("removal")
5753
static class ReactorNetty {
5854

5955
@Bean
6056
@Order(0)
6157
ClientHttpConnectorBuilderCustomizer<ReactorClientHttpConnectorBuilder> reactorNettyHttpClientMapperClientHttpConnectorBuilderCustomizer(
62-
ReactorResourceFactory reactorResourceFactory,
6358
ObjectProvider<ReactorNettyHttpClientMapper> mapperProvider) {
6459
return applyMappers(mapperProvider.orderedStream().toList());
6560
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/http/client/reactive/ClientHttpConnectorAutoConfigurationTests.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
2424
import org.junit.jupiter.api.Test;
2525
import reactor.netty.http.client.HttpClient;
26+
import reactor.netty.resources.LoopResources;
2627

2728
import org.springframework.beans.factory.config.BeanDefinition;
2829
import org.springframework.boot.autoconfigure.AutoConfigurations;
@@ -114,6 +115,21 @@ void shouldUseCustomReactorResourceFactory() {
114115
assertThat(context).hasSingleBean(ClientHttpConnector.class);
115116
assertThat(context).hasSingleBean(ReactorResourceFactory.class);
116117
assertThat(context).hasBean("customReactorResourceFactory");
118+
ClientHttpConnector connector = context.getBean(ClientHttpConnector.class);
119+
assertThat(connector).extracting("httpClient.config.loopResources")
120+
.isEqualTo(context.getBean("customReactorResourceFactory", ReactorResourceFactory.class)
121+
.getLoopResources());
122+
});
123+
}
124+
125+
@Test
126+
void shouldUseReactorResourceFactory() {
127+
this.contextRunner.run((context) -> {
128+
assertThat(context).hasSingleBean(ClientHttpConnector.class);
129+
assertThat(context).hasSingleBean(ReactorResourceFactory.class);
130+
ClientHttpConnector connector = context.getBean(ClientHttpConnector.class);
131+
assertThat(connector).extracting("httpClient.config.loopResources")
132+
.isEqualTo(context.getBean(ReactorResourceFactory.class).getLoopResources());
117133
});
118134
}
119135

@@ -190,7 +206,10 @@ static class CustomReactorResourceConfig {
190206

191207
@Bean
192208
ReactorResourceFactory customReactorResourceFactory() {
193-
return new ReactorResourceFactory();
209+
ReactorResourceFactory reactorResourceFactory = new ReactorResourceFactory();
210+
reactorResourceFactory.setUseGlobalResources(false);
211+
reactorResourceFactory.setLoopResources(LoopResources.create("custom-loop", 1, true));
212+
return reactorResourceFactory;
194213
}
195214

196215
}

0 commit comments

Comments
 (0)