HttpComponentsClientHttpRequestFactory 现在需要 5 Apache HttpClient

Spring Framework 6 支持 Apache HttpClient 4.x 已从 HttpComponentsClientHttpRequestFactory.依赖于该工厂的组件,如 RestTemplate 现在必须使用 Apache HttpClient 5.x,它使用 org.apache.hc.*

任何使用 HttpClient 4.x 类,如 CloseableHttpClient, HttpClient, RequestConfig,或 HttpContextorg.apache.http.* Spring 的 HTTP 客户端基础架构中的软件包(包括构造函数、方法调用或配置,涉及 HttpComponentsClientHttpRequestFactory) 会导致编译错误,必须更新以使用 HttpClient 5.x 等价物。

查看以下方法和构造函数 HttpComponentsClientHttpRequestFactory 以确保它们不引用 HttpClient 4.x API:

下面的示例显示了将被标记的无效用法:


import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
public class InvalidHttp4ClientUsage {
    public void example() {
      CloseableHttpClient client = HttpClients.custom().build();
      RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(client));
        }
    }

下面的示例显示了有效的迁移用法:


import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
public class ValidHttpClientUsage {
    public void example() {
      CloseableHttpClient client = HttpClients.custom().build();
      RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(client));
        }
    }

有关更多信息,请参阅以下资源: