В Spring Framework 6 появилась поддержка Apache HttpClient 4.x был удален из HttpComponentsClientHttpRequestFactory. Компоненты, которые полагаются на эту фабрику, такие как RestTemplate теперь должны использовать Apache HttpClient 5.x, который использует org.apache.hc.* пакет.
Любое использование HttpClient 4.x такие классы, как CloseableHttpClient, HttpClient, RequestConfig, или HttpContext из org.apache.http.* пакет в инфраструктуре клиента Spring ' HTTP (включая конструкторы, вызовы методов или конфигурации, включающие HttpComponentsClientHttpRequestFactory) может привести к ошибкам компиляции, и его необходимо обновить, чтобы использовать HttpClient 5.x эквиваленты.
Просмотрите следующие методы и конструкторы из HttpComponentsClientHttpRequestFactory чтобы убедиться, что они не ссылаются на HttpClient 4.x API:
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)В следующем примере показано недопустимое использование, которое будет отмечено:
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));
}
}
Дополнительная информация: