Merge pull request #49695 from kwondh5217

* kwondh5217/main:
  Add @ConditionalOnWebApplication to NettyReactiveWebServerAutoConfiguration

Closes gh-49695
This commit is contained in:
Phillip Webb
2026-03-21 14:28:04 -07:00
2 changed files with 15 additions and 0 deletions
@@ -23,6 +23,8 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.reactor.netty.NettyRouteProvider;
@@ -42,10 +44,12 @@ import org.springframework.http.client.ReactorResourceFactory;
* server.
*
* @author Andy Wilkinson
* @author Daeho Kwon
* @since 4.0.0
*/
@AutoConfiguration
@ConditionalOnClass({ ReactiveHttpInputMessage.class, HttpServer.class })
@ConditionalOnWebApplication(type = Type.REACTIVE)
@EnableConfigurationProperties(NettyServerProperties.class)
@Import({ ReactiveWebServerConfiguration.class, ReactorResourceFactoryConfiguration.class })
public final class NettyReactiveWebServerAutoConfiguration {
@@ -19,10 +19,13 @@ package org.springframework.boot.reactor.netty.autoconfigure;
import org.junit.jupiter.api.Test;
import reactor.netty.http.server.HttpServer;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.reactor.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.reactor.netty.NettyServerCustomizer;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.server.autoconfigure.reactive.AbstractReactiveWebServerAutoConfigurationTests;
import org.springframework.boot.web.server.reactive.ReactiveWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -39,6 +42,7 @@ import static org.mockito.Mockito.mock;
* @author Raheela Aslam
* @author Madhura Bhave
* @author Scott Frederick
* @author Daeho Kwon
*/
// @DirtiesUrlFactories
class NettyReactiveWebServerAutoConfigurationTests extends AbstractReactiveWebServerAutoConfigurationTests {
@@ -67,6 +71,13 @@ class NettyReactiveWebServerAutoConfigurationTests extends AbstractReactiveWebSe
});
}
@Test
void autoConfigurationDoesNotApplyToNonWebApplication() {
new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(NettyReactiveWebServerAutoConfiguration.class))
.run((context) -> assertThat(context).doesNotHaveBean(ReactiveWebServerFactory.class));
}
@Configuration(proxyBeanMethods = false)
static class NettyServerCustomizerConfiguration {