A Spring Framework 6-ban a támogatás a Apache HttpClient 4.x eltávolították a HttpComponentsClientHttpRequestFactory. Azokra az összetevőkre, amelyek erre a gyárra támaszkodnak, mint például a RestTemplate mostantól a Apache HttpClient 5.x, amely a org.apache.hc.* csomag.
A HttpClient 4.x osztályok, mint például CloseableHttpClient, HttpClient, RequestConfig, vagy HttpContext a org.apache.http.* csomagot a Spring 's HTTP ügyfél infrastruktúrán belül (beleértve a konstruktorokat, metódushívásokat vagy konfigurációkat, amelyekben a HttpComponentsClientHttpRequestFactory) fordítási hibákhoz vezethet, és frissíteni kell, hogy használja a HttpClient 5.x egyenértékűek.
Tekintse át a következő metódusokat és konstruktorokat a HttpComponentsClientHttpRequestFactory annak biztosítására, hogy ne hivatkozzanak a HttpClient 4.x API-kra:
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)A következő példa a jelzett érvénytelen használatot mutatja:
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));
}
}
A következő példa az érvényes migrált használatot mutatja:
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));
}
}
Az alábbi információforrások nyújtanak további tájékoztatást: