Skip to content

Commit 4697703

Browse files
committed
Create spring-boot-reactor-netty module
1 parent 2bbb521 commit 4697703

File tree

55 files changed

+179
-67
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+179
-67
lines changed

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ include "spring-boot-project:spring-boot-docker-compose"
6767
include "spring-boot-project:spring-boot-devtools"
6868
include "spring-boot-project:spring-boot-docs"
6969
include "spring-boot-project:spring-boot-jetty"
70+
include "spring-boot-project:spring-boot-reactor-netty"
7071
include "spring-boot-project:spring-boot-test"
7172
include "spring-boot-project:spring-boot-testcontainers"
7273
include "spring-boot-project:spring-boot-test-autoconfigure"

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dependencies {
1818
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
1919

2020
optional(project(":spring-boot-project:spring-boot-jetty"))
21+
optional(project(":spring-boot-project:spring-boot-reactor-netty"))
2122
optional(project(":spring-boot-project:spring-boot-tomcat"))
2223
optional(project(":spring-boot-project:spring-boot-undertow"))
2324
optional("ch.qos.logback:logback-classic")

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/web/server/netty/NettyReactiveManagementChildContextConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2727
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
2828
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
29-
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
3029
import org.springframework.boot.context.properties.EnableConfigurationProperties;
30+
import org.springframework.boot.reactor.netty.autoconfigure.NettyReactiveWebServerAutoConfiguration;
3131
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
3232
import org.springframework.context.annotation.Bean;
3333

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/web/server/netty/NettyReactiveManagementContextAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2727
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
2828
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
29-
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
29+
import org.springframework.boot.reactor.netty.autoconfigure.NettyReactiveWebServerAutoConfiguration;
3030
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
3131
import org.springframework.context.annotation.Bean;
3232

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryWebFluxEndpointIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
import org.springframework.boot.autoconfigure.AutoConfigurations;
4747
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
4848
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
49-
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
49+
import org.springframework.boot.reactor.netty.autoconfigure.NettyReactiveWebServerAutoConfiguration;
5050
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
5151
import org.springframework.boot.test.context.runner.ContextConsumer;
5252
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebFluxEndpointAccessIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
2929
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
3030
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
31-
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
31+
import org.springframework.boot.reactor.netty.autoconfigure.NettyReactiveWebServerAutoConfiguration;
3232
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
3333
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
3434
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebFluxHealthEndpointAdditionalPathIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
2929
import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration;
3030
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
31-
import org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration;
31+
import org.springframework.boot.reactor.netty.autoconfigure.NettyReactiveWebServerAutoConfiguration;
3232
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
3333
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
3434
import org.springframework.boot.web.context.ServerPortInfoApplicationContextInitializer;

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/web/mappings/MappingsEndpointReactiveDocumentationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
import org.springframework.boot.actuate.web.mappings.MappingDescriptionProvider;
3030
import org.springframework.boot.actuate.web.mappings.MappingsEndpoint;
3131
import org.springframework.boot.actuate.web.mappings.reactive.DispatcherHandlersMappingDescriptionProvider;
32+
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
3233
import org.springframework.boot.test.context.SpringBootTest;
3334
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
3435
import org.springframework.boot.test.web.server.LocalServerPort;
35-
import org.springframework.boot.web.server.reactive.netty.NettyReactiveWebServerFactory;
3636
import org.springframework.context.ConfigurableApplicationContext;
3737
import org.springframework.context.annotation.Bean;
3838
import org.springframework.context.annotation.Configuration;

spring-boot-project/spring-boot-actuator/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ dependencies {
2424
dockerTestImplementation("org.testcontainers:testcontainers")
2525

2626
optional(project(":spring-boot-project:spring-boot-jetty"))
27+
optional(project(":spring-boot-project:spring-boot-reactor-netty"))
2728
optional(project(":spring-boot-project:spring-boot-tomcat"))
2829
optional(project(":spring-boot-project:spring-boot-undertow"))
2930
optional("org.apache.cassandra:java-driver-core") {
@@ -94,9 +95,10 @@ dependencies {
9495
optional("org.springframework.security:spring-security-web")
9596
optional("org.springframework.session:spring-session-core")
9697

98+
testImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all"))
99+
testImplementation(project(":spring-boot-project:spring-boot-reactor-netty"))
97100
testImplementation(project(":spring-boot-project:spring-boot-test"))
98101
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
99-
testImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all"))
100102
testImplementation("org.assertj:assertj-core")
101103
testImplementation("com.jayway.jsonpath:json-path")
102104
testImplementation("io.micrometer:micrometer-observation-test")

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/reactive/ControllerEndpointHandlerMappingIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
3535
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
3636
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
37+
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
3738
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
3839
import org.springframework.boot.test.context.runner.ContextConsumer;
3940
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
4041
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
41-
import org.springframework.boot.web.server.reactive.netty.NettyReactiveWebServerFactory;
4242
import org.springframework.context.ApplicationContext;
4343
import org.springframework.context.annotation.Bean;
4444
import org.springframework.context.annotation.Configuration;

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/reactive/WebFluxEndpointIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpointDiscoverer;
2828
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
2929
import org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration;
30+
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
3031
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
3132
import org.springframework.boot.web.reactive.context.ReactiveWebServerInitializedEvent;
32-
import org.springframework.boot.web.server.reactive.netty.NettyReactiveWebServerFactory;
3333
import org.springframework.context.ApplicationContext;
3434
import org.springframework.context.ApplicationListener;
3535
import org.springframework.context.annotation.Bean;

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/test/WebEndpointTestInvocationContextProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@
5555
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
5656
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
5757
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
58+
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
5859
import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
5960
import org.springframework.boot.web.context.WebServerInitializedEvent;
6061
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
61-
import org.springframework.boot.web.server.reactive.netty.NettyReactiveWebServerFactory;
6262
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext;
6363
import org.springframework.context.ApplicationContext;
6464
import org.springframework.context.ApplicationListener;

spring-boot-project/spring-boot-all/src/main/java/org/springframework/boot/rsocket/netty/NettyRSocketServerFactory.java

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,24 @@
2222
import java.util.ArrayList;
2323
import java.util.Arrays;
2424
import java.util.Collection;
25+
import java.util.HashMap;
2526
import java.util.List;
2627
import java.util.Map;
2728
import java.util.stream.Collectors;
2829

30+
import io.netty.handler.ssl.ClientAuth;
2931
import io.rsocket.SocketAcceptor;
3032
import io.rsocket.transport.ServerTransport;
3133
import io.rsocket.transport.netty.server.CloseableChannel;
3234
import io.rsocket.transport.netty.server.TcpServerTransport;
3335
import io.rsocket.transport.netty.server.WebsocketServerTransport;
3436
import reactor.core.publisher.Mono;
37+
import reactor.netty.http.Http11SslContextSpec;
3538
import reactor.netty.http.server.HttpServer;
39+
import reactor.netty.tcp.AbstractProtocolSslContextSpec;
40+
import reactor.netty.tcp.SslProvider;
3641
import reactor.netty.tcp.SslProvider.GenericSslContextSpec;
42+
import reactor.netty.tcp.SslProvider.SslContextSpec;
3743
import reactor.netty.tcp.TcpServer;
3844

3945
import org.springframework.boot.context.properties.PropertyMapper;
@@ -43,11 +49,10 @@
4349
import org.springframework.boot.rsocket.server.RSocketServerFactory;
4450
import org.springframework.boot.ssl.SslBundle;
4551
import org.springframework.boot.ssl.SslBundles;
52+
import org.springframework.boot.ssl.SslOptions;
4653
import org.springframework.boot.web.server.Ssl;
47-
import org.springframework.boot.web.server.Ssl.ClientAuth;
4854
import org.springframework.boot.web.server.Ssl.ServerNameSslBundle;
4955
import org.springframework.boot.web.server.WebServerSslBundle;
50-
import org.springframework.boot.web.server.reactive.netty.SslServerCustomizer;
5156
import org.springframework.http.client.ReactorResourceFactory;
5257
import org.springframework.util.Assert;
5358
import org.springframework.util.unit.DataSize;
@@ -185,7 +190,7 @@ private ServerTransport<CloseableChannel> createWebSocketTransport() {
185190
}
186191

187192
private HttpServer customizeSslConfiguration(HttpServer httpServer) {
188-
return new SslServerCustomizer(null, this.ssl.getClientAuth(), getSslBundle(), getServerNameSslBundles())
193+
return new HttpServerSslCustomizer(this.ssl.getClientAuth(), getSslBundle(), getServerNameSslBundles())
189194
.apply(httpServer);
190195
}
191196

@@ -195,7 +200,7 @@ private ServerTransport<CloseableChannel> createTcpTransport() {
195200
tcpServer = tcpServer.runOn(this.resourceFactory.getLoopResources());
196201
}
197202
if (Ssl.isEnabled(this.ssl)) {
198-
tcpServer = new TcpSslServerCustomizer(this.ssl.getClientAuth(), getSslBundle(), getServerNameSslBundles())
203+
tcpServer = new TcpServerSslCustomizer(this.ssl.getClientAuth(), getSslBundle(), getServerNameSslBundles())
199204
.apply(tcpServer);
200205
}
201206
return TcpServerTransport.create(tcpServer.bindAddress(this::getListenAddress));
@@ -222,14 +227,35 @@ private InetSocketAddress getListenAddress() {
222227
return new InetSocketAddress(this.port);
223228
}
224229

225-
private static final class TcpSslServerCustomizer
226-
extends org.springframework.boot.web.server.reactive.netty.SslServerCustomizer {
230+
private abstract static class SslCustomizer {
231+
232+
private final ClientAuth clientAuth;
233+
234+
protected SslCustomizer(ClientAuth clientAuth) {
235+
this.clientAuth = clientAuth;
236+
}
237+
238+
protected final AbstractProtocolSslContextSpec<?> createSslContextSpec(SslBundle sslBundle) {
239+
AbstractProtocolSslContextSpec<?> sslContextSpec = Http11SslContextSpec
240+
.forServer(sslBundle.getManagers().getKeyManagerFactory());
241+
return sslContextSpec.configure((builder) -> {
242+
builder.trustManager(sslBundle.getManagers().getTrustManagerFactory());
243+
SslOptions options = sslBundle.getOptions();
244+
builder.protocols(options.getEnabledProtocols());
245+
builder.ciphers(SslOptions.asSet(options.getCiphers()));
246+
builder.clientAuth(this.clientAuth);
247+
});
248+
}
249+
250+
}
251+
252+
private static final class TcpServerSslCustomizer extends SslCustomizer {
227253

228254
private final SslBundle sslBundle;
229255

230-
private TcpSslServerCustomizer(ClientAuth clientAuth, SslBundle sslBundle,
256+
private TcpServerSslCustomizer(Ssl.ClientAuth clientAuth, SslBundle sslBundle,
231257
Map<String, SslBundle> serverNameSslBundles) {
232-
super(null, clientAuth, sslBundle, serverNameSslBundles);
258+
super(Ssl.ClientAuth.map(clientAuth, ClientAuth.NONE, ClientAuth.OPTIONAL, ClientAuth.REQUIRE));
233259
this.sslBundle = sslBundle;
234260
}
235261

@@ -240,4 +266,42 @@ private TcpServer apply(TcpServer server) {
240266

241267
}
242268

269+
private static final class HttpServerSslCustomizer extends SslCustomizer {
270+
271+
private final SslProvider sslProvider;
272+
273+
private final Map<String, SslProvider> serverNameSslProviders;
274+
275+
private HttpServerSslCustomizer(Ssl.ClientAuth clientAuth, SslBundle sslBundle,
276+
Map<String, SslBundle> serverNameSslBundles) {
277+
super(Ssl.ClientAuth.map(clientAuth, ClientAuth.NONE, ClientAuth.OPTIONAL, ClientAuth.REQUIRE));
278+
this.sslProvider = createSslProvider(sslBundle);
279+
this.serverNameSslProviders = createServerNameSslProviders(serverNameSslBundles);
280+
}
281+
282+
private HttpServer apply(HttpServer server) {
283+
return server.secure(this::applySecurity);
284+
}
285+
286+
private void applySecurity(SslContextSpec spec) {
287+
spec.sslContext(this.sslProvider.getSslContext()).setSniAsyncMappings((serverName, promise) -> {
288+
SslProvider provider = (serverName != null) ? this.serverNameSslProviders.get(serverName)
289+
: this.sslProvider;
290+
return promise.setSuccess(provider);
291+
});
292+
}
293+
294+
private Map<String, SslProvider> createServerNameSslProviders(Map<String, SslBundle> serverNameSslBundles) {
295+
Map<String, SslProvider> serverNameSslProviders = new HashMap<>();
296+
serverNameSslBundles.forEach(
297+
(serverName, sslBundle) -> serverNameSslProviders.put(serverName, createSslProvider(sslBundle)));
298+
return serverNameSslProviders;
299+
}
300+
301+
private SslProvider createSslProvider(SslBundle sslBundle) {
302+
return SslProvider.builder().sslContext((GenericSslContextSpec<?>) createSslContextSpec(sslBundle)).build();
303+
}
304+
305+
}
306+
243307
}

spring-boot-project/spring-boot-autoconfigure-all/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dependencies {
4242
dockerTestImplementation("org.testcontainers:pulsar")
4343
dockerTestImplementation("org.testcontainers:testcontainers")
4444

45+
optional(project(":spring-boot-project:spring-boot-reactor-netty"))
4546
optional(project(":spring-boot-project:spring-boot-tomcat"))
4647
optional("co.elastic.clients:elasticsearch-java") {
4748
exclude group: "commons-logging", module: "commons-logging"

spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketServerAutoConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3434
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
3535
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
36-
import org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations;
3736
import org.springframework.boot.autoconfigure.rsocket.RSocketProperties.Server.Spec;
3837
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3938
import org.springframework.boot.context.properties.PropertyMapper;
39+
import org.springframework.boot.reactor.netty.autoconfigure.ReactorNettyConfigurations;
4040
import org.springframework.boot.rsocket.context.RSocketServerBootstrap;
4141
import org.springframework.boot.rsocket.netty.NettyRSocketServerFactory;
4242
import org.springframework.boot.rsocket.server.RSocketServerCustomizer;
@@ -56,8 +56,8 @@
5656
* {@link EnableAutoConfiguration Auto-configuration} for RSocket servers. In the case of
5757
* {@link org.springframework.boot.WebApplicationType#REACTIVE}, the RSocket server is
5858
* added as a WebSocket endpoint on the existing
59-
* {@link org.springframework.boot.web.server.reactive.netty.NettyWebServer}. If a
60-
* specific server port is configured, a new standalone RSocket server is created.
59+
* {@link org.springframework.boot.reactor.netty.NettyWebServer}. If a specific server
60+
* port is configured, a new standalone RSocket server is created.
6161
*
6262
* @author Brian Clozel
6363
* @author Scott Frederick

spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketWebSocketNettyRouteProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
import reactor.netty.http.server.WebsocketServerSpec;
2929
import reactor.netty.http.server.WebsocketServerSpec.Builder;
3030

31+
import org.springframework.boot.reactor.netty.NettyRouteProvider;
3132
import org.springframework.boot.rsocket.server.RSocketServerCustomizer;
32-
import org.springframework.boot.web.server.reactive.netty.NettyRouteProvider;
3333

3434
/**
3535
* {@link NettyRouteProvider} that configures an RSocket Websocket endpoint.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.springframework.beans.factory.ObjectProvider;
2424
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
26-
import org.springframework.boot.autoconfigure.reactor.netty.ReactorNettyConfigurations;
26+
import org.springframework.boot.reactor.netty.autoconfigure.ReactorNettyConfigurations;
2727
import org.springframework.context.annotation.Bean;
2828
import org.springframework.context.annotation.Configuration;
2929
import org.springframework.context.annotation.Import;
@@ -40,7 +40,7 @@
4040
class ClientHttpConnectorFactoryConfiguration {
4141

4242
@Configuration(proxyBeanMethods = false)
43-
@ConditionalOnClass(reactor.netty.http.client.HttpClient.class)
43+
@ConditionalOnClass({ reactor.netty.http.client.HttpClient.class, ReactorNettyConfigurations.class })
4444
@ConditionalOnMissingBean(ClientHttpConnectorFactory.class)
4545
@Import(ReactorNettyConfigurations.ReactorResourceFactoryConfiguration.class)
4646
static class ReactorNetty {

spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
{
22
"groups": [],
33
"properties": [
4-
{
5-
"name": "server.netty.max-chunk-size",
6-
"deprecation": {
7-
"reason": "Deprecated for removal in Reactor Netty.",
8-
"level": "error"
9-
}
10-
},
114
{
125
"name": "spring.activemq.pool.create-connection-on-startup",
136
"type": "java.lang.Boolean",

spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConf
127127
org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration
128128
org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration
129129
org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration
130-
org.springframework.boot.autoconfigure.web.server.reactive.netty.NettyReactiveWebServerAutoConfiguration
131130
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
132131
org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
133132
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration

0 commit comments

Comments
 (0)