Merge branch '2.7.x' into 3.0.x

Closes gh-35380
This commit is contained in:
Moritz Halbritter
2023-05-10 10:58:03 +02:00
3 changed files with 14 additions and 1 deletions

View File

@@ -57,6 +57,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.kafka:kafka-streams")
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.apache.tomcat.embed:tomcat-embed-el")

View File

@@ -18,6 +18,7 @@ package org.springframework.boot.autoconfigure.web.reactive.function.client;
import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
import org.apache.hc.core5.http.nio.AsyncRequestProducer;
import org.apache.hc.core5.reactive.ReactiveResponseConsumer;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
import org.eclipse.jetty.io.ClientConnector;
@@ -93,7 +94,7 @@ class ClientHttpConnectorConfiguration {
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ HttpAsyncClients.class, AsyncRequestProducer.class })
@ConditionalOnClass({ HttpAsyncClients.class, AsyncRequestProducer.class, ReactiveResponseConsumer.class })
@ConditionalOnMissingBean(ClientHttpConnector.class)
static class HttpClient5 {

View File

@@ -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 ClientHttpConnectorConfigurationTests {
@@ -83,6 +86,14 @@ class ClientHttpConnectorConfigurationTests {
});
}
@Test
void shouldNotConfigureReactiveHttpClient5WhenHttpCore5ReactiveJarIsMissing() {
new ReactiveWebApplicationContextRunner()
.withClassLoader(new FilteredClassLoader("org.apache.hc.core5.reactive"))
.withConfiguration(AutoConfigurations.of(ClientHttpConnectorConfiguration.HttpClient5.class))
.run((context) -> assertThat(context).doesNotHaveBean(HttpComponentsClientHttpConnector.class));
}
static class CustomHttpClientMapper {
static boolean called = false;