我正在将 spring boot 版本 2.7.3 迁移到 spring-boot 3.0.0,因此现有代码会破坏与 HttpClients 相关的代码

Meh*_*ban 2 java spring-boot

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
 
@Configuration
@Profile("dev")
public class RestTemplateConfigurationDev {
   @Bean
   public RestTemplate getRestTemplate() {
       CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
 
       HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
 
       requestFactory.setHttpClient(httpClient);
       requestFactory.setConnectTimeout(30000);
       requestFactory.setReadTimeout(30000); 
       requestFactory.setConnectionRequestTimeout(30000);

       return new RestTemplate(requestFactory);
    }
} 
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,

requestFactory.setHttpClient(httpClient)

升级到最新的 Spring Boot 版本后,此方法不接受 CloseableHttpClient 对象。

requestFactory.setReadTimeout(30000);

虽然此方法已被弃用。

有人知道如何在 Spring Boot 3.0 中解决这些问题吗?

小智 5

尝试导入较新版本的 HttpClient,例如 Http5 客户端。这种依赖性应该可以解决您的问题。

<dependency>
        <groupId>org.apache.httpcomponents.client5</groupId>
        <artifactId>httpclient5</artifactId>
        <version>5.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是,一旦您发布问题,请使用正确的格式。