W Spring Framework 6, wsparcie dla Apache HttpClient 4.x został usunięty z HttpComponentsClientHttpRequestFactory. Komponenty, które polegają na tej fabryce, takie jak RestTemplate musi teraz używać Apache HttpClient 5.xktóry wykorzystuje org.apache.hc.* .
Każde użycie HttpClient 4.x klasy takie jak CloseableHttpClient, HttpClient, RequestConfiglub HttpContext z org.apache.http.* pakiet w ramach infrastruktury klienta Spring ' HTTP (w tym konstruktory, wywołania metod lub konfiguracje obejmujące HttpComponentsClientHttpRequestFactory) może prowadzić do błędów kompilacji i musi zostać zaktualizowana, aby używać HttpClient 5.x odpowiedniki.
Przejrzyj następujące metody i konstruktory z HttpComponentsClientHttpRequestFactory aby upewnić się, że nie odwołują się do interfejsów API HttpClient 4.x :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)Poniższy przykład pokazuje nieprawidłowe użycie, które zostanie oflagowane:
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));
}
}
Poniższy przykład pokazuje prawidłowe zmigrowane użycie:
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));
}
}
Więcej informacji na ten temat zawierają następujące zasoby: