In Spring Framework 6 ist die Unterstützung für Apache HttpClient 4.x wurde entfernt aus HttpComponentsClientHttpRequestFactory. Komponenten, die auf diese Fabrik angewiesen sind, wie z. B RestTemplate müssen nun Apache HttpClient 5.xdie die org.apache.hc.* .
Jede Verwendung von HttpClient 4.x klassen wie CloseableHttpClient, HttpClient, RequestConfigoder HttpContext über das org.apache.http.* paket innerhalb der HTTP Client-Infrastruktur von Spring (einschließlich Konstruktoren, Methodenaufrufe oder Konfigurationen, die HttpComponentsClientHttpRequestFactory) kann zu Kompilierungsfehlern führen und muss aktualisiert werden, um die HttpClient 5.x äquivalente.
Überprüfen Sie die folgenden Methoden und Konstruktoren aus HttpComponentsClientHttpRequestFactory um sicherzustellen, dass sie nicht auf HttpClient 4.x APIs verweisen:
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)Das folgende Beispiel zeigt eine ungültige Verwendung, die gekennzeichnet wird:
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));
}
}
Das folgende Beispiel zeigt eine gültige migrierte Verwendung:
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));
}
}
Weitere Informationen finden Sie in den folgenden Quellen: