Dans Spring Framework 6, la prise en charge des Apache HttpClient 4.x a été supprimée de la liste des HttpComponentsClientHttpRequestFactory. Les composants qui dépendent de cette usine, tels que RestTemplate doit maintenant utiliser Apache HttpClient 5.xqui utilise le org.apache.hc.* .
Toute utilisation de HttpClient 4.x des classes telles que CloseableHttpClient, HttpClient, RequestConfigou HttpContext sur la org.apache.http.* au sein de l'infrastructure client HTTP de Spring (y compris les constructeurs, les invocations de méthodes ou les configurations impliquant des HttpComponentsClientHttpRequestFactory) peut conduire à des erreurs de compilation et doit être mis à jour pour utiliser la méthode HttpClient 5.x équivalents.
Passez en revue les méthodes et les constructeurs suivants de HttpComponentsClientHttpRequestFactory pour s'assurer qu'ils ne font pas référence à HttpClient 4.x API :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)L'exemple suivant montre une utilisation non valide qui sera signalée :
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));
}
}
L'exemple suivant montre une utilisation migrée valide :
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));
}
}
Pour plus d'informations, voir les ressources suivantes :