diff --git a/spring-boot-project/spring-boot-autoconfigure/build.gradle b/spring-boot-project/spring-boot-autoconfigure/build.gradle index bd0703269b0..db2a24fb506 100644 --- a/spring-boot-project/spring-boot-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure/build.gradle @@ -59,7 +59,7 @@ dependencies { exclude group: "commons-logging", module: "commons-logging" } optional("org.apache.httpcomponents.client5:httpclient5") - optional("org.apache.httpcomponents.core5:httpcore5-reactive"); + optional("org.apache.httpcomponents.core5:httpcore5-reactive") optional("org.apache.kafka:kafka-streams") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-el") diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfigurationTests.java index 1f71a5e878b..234b9d7df04 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/reactive/function/client/ClientHttpConnectorFactoryConfigurationTests.java @@ -24,8 +24,10 @@ import org.eclipse.jetty.util.thread.Scheduler; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.context.annotation.Bean; +import org.springframework.http.client.reactive.HttpComponentsClientHttpConnector; import org.springframework.http.client.reactive.JettyClientHttpConnector; import org.springframework.http.client.reactive.JettyResourceFactory; import org.springframework.test.util.ReflectionTestUtils; @@ -38,6 +40,7 @@ import static org.mockito.Mockito.mock; * * @author Phillip Webb * @author Brian Clozel + * @author Moritz Halbritter */ class ClientHttpConnectorFactoryConfigurationTests { @@ -86,6 +89,14 @@ class ClientHttpConnectorFactoryConfigurationTests { }); } + @Test + void shouldNotConfigureReactiveHttpClient5WhenHttpCore5ReactiveJarIsMissing() { + new ReactiveWebApplicationContextRunner() + .withClassLoader(new FilteredClassLoader("org.apache.hc.core5.reactive")) + .withConfiguration(AutoConfigurations.of(ClientHttpConnectorFactoryConfiguration.HttpClient5.class)) + .run((context) -> assertThat(context).doesNotHaveBean(HttpComponentsClientHttpConnector.class)); + } + static class CustomHttpClientMapper { static boolean called = false;