Skip to content

Commit d5f7423

Browse files
committed
Merge branch '3.5.x'
Closes gh-46684
2 parents 0479d6f + 151216a commit d5f7423

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3131
import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder;
3232
import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings;
33+
import org.springframework.boot.http.client.reactive.ReactorClientHttpConnectorBuilder;
3334
import org.springframework.boot.reactor.netty.autoconfigure.ReactorNettyConfigurations;
3435
import org.springframework.boot.ssl.SslBundles;
3536
import org.springframework.boot.util.LambdaSafe;
@@ -38,6 +39,8 @@
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
/**
@@ -104,6 +107,13 @@ ClientHttpConnector clientHttpConnector(ClientHttpConnectorBuilder<?> clientHttp
104107
@Import(ReactorNettyConfigurations.ReactorResourceFactoryConfiguration.class)
105108
static class ReactorNetty {
106109

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

109119
}

module/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/autoconfigure/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)