In Spring Framework 6, il supporto per Apache HttpClient 4.x è stato rimosso da HttpComponentsClientHttpRequestFactory. I componenti che si affidano a questa fabbrica, come RestTemplate deve ora utilizzare Apache HttpClient 5.xche utilizza il metodo org.apache.hc.* pacchetto.
Qualsiasi utilizzo di HttpClient 4.x classi come CloseableHttpClient, HttpClient, RequestConfig, oppure HttpContext dal org.apache.http.* all'interno dell'infrastruttura client di Spring ' HTTP (compresi i costruttori, le invocazioni di metodi o le configurazioni che coinvolgono HttpComponentsClientHttpRequestFactory) può portare a errori di compilazione e deve essere aggiornato per utilizzare l'opzione HttpClient 5.x equivalenti.
Esaminare i seguenti metodi e costruttori di HttpComponentsClientHttpRequestFactory per assicurarsi che non facciano riferimento alle API HttpClient 4.x :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)L'esempio seguente mostra un utilizzo non valido che verrà segnalato:
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'esempio seguente mostra un uso valido della migrazione:
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));
}
}
Per ulteriori informazioni, consultare le seguenti risorse: