V systému Spring Framework 6 je podpora pro Apache HttpClient 4.x byl odstraněn z HttpComponentsClientHttpRequestFactory. Komponenty, které se spoléhají na tuto továrnu, jako např RestTemplate musí nyní používat Apache HttpClient 5.x, který používá org.apache.hc.* .
Jakékoli použití HttpClient 4.x třídy jako např CloseableHttpClient, HttpClient, RequestConfignebo HttpContext z org.apache.http.* v rámci klientské infrastruktury Spring 's HTTP (včetně konstruktorů, volání metod nebo konfigurací zahrnujících HttpComponentsClientHttpRequestFactory) může vést k chybám při kompilaci a musí být aktualizována tak, aby používala HttpClient 5.x ekvivalenty.
Zkontrolujte následující metody a konstruktory z HttpComponentsClientHttpRequestFactory aby se zajistilo, že neodkazují na rozhraní API HttpClient 4.x :
HttpComponentsClientHttpRequestFactory(HttpClient)setHttpClient(HttpClient)getHttpClient()mergeRequestConfig(RequestConfig)postProcessHttpRequest(HttpUriRequest)createHttpUriRequest(HttpMethod, URI)createHttpContext(HttpMethod, URI)createRequestConfig(Object)setHttpContextFactory(BiFunction)Následující příklad ukazuje neplatné použití, které bude označeno:
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));
}
}
Následující příklad ukazuje platné migrované použití:
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));
}
}
Další informace viz následující prostředky: