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 :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)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: