HttpComponentsClientHttpRequestFactory теперь требуется Apache HttpClient 5

В 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:

В следующем примере показано недопустимое использование, которое будет отмечено:


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));
        }
    }

Дополнительная информация: