În Spring Framework 6, suportul pentru Apache HttpClient 4.x a fost eliminat din HttpComponentsClientHttpRequestFactory. Componentele care se bazează pe această fabrică, cum ar fi RestTemplate trebuie să utilizeze acum Apache HttpClient 5.x, care utilizează org.apache.hc.* .
Orice utilizare a HttpClient 4.x clase cum ar fi CloseableHttpClient, HttpClient, RequestConfigsau HttpContext de la org.apache.http.* în cadrul infrastructurii clientului Spring 's HTTP (inclusiv constructori, invocări de metode sau configurații care implică HttpComponentsClientHttpRequestFactory) poate duce la erori de compilare și trebuie actualizată pentru a utiliza HttpClient 5.x echivalenți.
Analizați următoarele metode și constructori din HttpComponentsClientHttpRequestFactory pentru a vă asigura că acestea nu fac trimitere la API-urile HttpClient 4.x :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)Următorul exemplu arată utilizarea invalidă care va fi marcată:
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));
}
}
Următorul exemplu arată utilizarea migrată validă:
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));
}
}
Pentru informaţii suplimentare, vedeţi resursele următoare: