From d65de19e7df494fed0b5ffa30142bd2ae4270150 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Mon, 3 Nov 2025 16:53:54 +0100 Subject: [PATCH] Deprecate setConnectTimeout on HttpComponents client factory Prior to this commit, the `HttpComponentsClientHttpRequestFactory` would set the connection timeout on the request configuration. This has been deprecated by the client itself and this value should be set while creating the client on the connection manager itself. This commit deprecates this method, as there is no way for the factory to set this value anymore. Closes gh-35748 --- .../HttpComponentsClientHttpRequestFactory.java | 12 ++++++++++++ .../HttpComponentsClientHttpRequestFactoryTests.java | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java index 7b7649a84af..a1706587479 100644 --- a/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.java @@ -33,8 +33,10 @@ import org.apache.hc.client5.http.classic.methods.HttpPost; import org.apache.hc.client5.http.classic.methods.HttpPut; import org.apache.hc.client5.http.classic.methods.HttpTrace; import org.apache.hc.client5.http.config.Configurable; +import org.apache.hc.client5.http.config.ConnectionConfig; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.classic.HttpClients; +import org.apache.hc.client5.http.impl.io.BasicHttpClientConnectionManager; import org.apache.hc.client5.http.io.HttpClientConnectionManager; import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.core5.http.ClassicHttpRequest; @@ -123,7 +125,12 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest * @param connectTimeout the timeout value in milliseconds * @see RequestConfig#getConnectTimeout() * @see SocketConfig#getSoTimeout + * @deprecated as of 6.2.13 in favor of setting it on + * {@link BasicHttpClientConnectionManager#setConnectionConfig(ConnectionConfig) the connection configuration} + * for the {@link org.apache.hc.client5.http.impl.classic.HttpClientBuilder#setConnectionManager(HttpClientConnectionManager) + * connection manager}. */ + @Deprecated(since = "6.2.13", forRemoval = true) public void setConnectTimeout(int connectTimeout) { Assert.isTrue(connectTimeout >= 0, "Timeout must be a non-negative value"); this.connectTimeout = connectTimeout; @@ -142,7 +149,12 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest * @since 6.1 * @see RequestConfig#getConnectTimeout() * @see SocketConfig#getSoTimeout + * @deprecated as of 6.2.13 in favor of setting it on + * {@link BasicHttpClientConnectionManager#setConnectionConfig(ConnectionConfig) the connection configuration} + * for the {@link org.apache.hc.client5.http.impl.classic.HttpClientBuilder#setConnectionManager(HttpClientConnectionManager) + * connection manager}. */ + @Deprecated(since = "6.2.13", forRemoval = true) public void setConnectTimeout(Duration connectTimeout) { Assert.notNull(connectTimeout, "ConnectTimeout must not be null"); Assert.isTrue(!connectTimeout.isNegative(), "Timeout must be a non-negative value"); diff --git a/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java b/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java index 95ca49ed43a..0dc4675db99 100644 --- a/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java +++ b/spring-web/src/test/java/org/springframework/http/client/HttpComponentsClientHttpRequestFactoryTests.java @@ -61,7 +61,7 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac } @Test - @SuppressWarnings("deprecation") + @SuppressWarnings("removal") void assertCustomConfig() throws Exception { HttpClient httpClient = HttpClientBuilder.create().build(); HttpComponentsClientHttpRequestFactory hrf = new HttpComponentsClientHttpRequestFactory(httpClient); @@ -103,7 +103,7 @@ class HttpComponentsClientHttpRequestFactoryTests extends AbstractHttpRequestFac } @Test - @SuppressWarnings("deprecation") + @SuppressWarnings("removal") void localSettingsOverrideClientDefaultSettings() throws Exception { RequestConfig defaultConfig = RequestConfig.custom() .setConnectTimeout(1234, MILLISECONDS)