HttpComponentsClientHttpRequestFactory agora requer Apache HttpClient 5

No Spring Framework 6, o suporte para Apache HttpClient 4.x foi removido de HttpComponentsClientHttpRequestFactory. Componentes que dependem dessa fábrica, como RestTemplate deve agora usar Apache HttpClient 5.xque usa o org.apache.hc.* pacote.

Qualquer uso de HttpClient 4.x classes como CloseableHttpClient, HttpClient, RequestConfigou HttpContext do org.apache.http.* na infraestrutura do cliente HTTP do Spring (incluindo construtores, invocações de métodos ou configurações que envolvam HttpComponentsClientHttpRequestFactory) pode levar a erros de compilação e deve ser atualizado para usar o HttpClient 5.x equivalentes.

Analise os seguintes métodos e construtores de HttpComponentsClientHttpRequestFactory para garantir que não façam referência às APIs HttpClient 4.x :

O exemplo a seguir mostra o uso inválido que será sinalizado:


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

O exemplo a seguir mostra o uso migrado válido:


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

Para obter informações adicionais, consulte os recursos a seguir: