En Spring Framework 6, la compatibilidad con Apache HttpClient 4.x se ha eliminado de HttpComponentsClientHttpRequestFactory. Los componentes que dependen de esta fábrica, como RestTemplate ahora debe utilizar Apache HttpClient 5.xque utiliza el org.apache.hc.* paquete.
Cualquier uso de HttpClient 4.x clases como CloseableHttpClient, HttpClient, RequestConfigo HttpContext del org.apache.http.* dentro de la infraestructura de cliente HTTP de Spring (incluidos constructores, invocaciones de métodos o configuraciones que impliquen HttpComponentsClientHttpRequestFactory) puede dar lugar a errores de compilación y debe actualizarse para utilizar la directiva HttpClient 5.x equivalentes.
Revise los siguientes métodos y constructores de HttpComponentsClientHttpRequestFactory para garantizar que no hacen referencia a las API de HttpClient 4.x :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)El siguiente ejemplo muestra el uso no válido que se marcará:
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));
}
}
El siguiente ejemplo muestra un 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 obtener más información, consulte los recursos siguientes: