HttpComponentsClientHttpRequestFactory exige désormais Apache HttpClient 5

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 :

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 :