【问题标题】:requestFactory(Class<? extends ClientHttpRequestFactory>) in the type RestTemplateBuilder is not applicableRestTemplateBuilder 类型中的 requestFactory(Class<? extends ClientHttpRequestFactory>) 不适用
【发布时间】:2023-03-02 21:25:01
【问题描述】:

我在我的项目中使用 springBootVersion = '2.0.1.RELEASE'。我正在尝试为我编写的 RestClientCertTestConfiguration 类编写相互身份验证代码,如下所示。我在 requestFactory 上遇到错误。 RestTemplateBuilder 类型中的方法 requestFactory(Class) 不适用于参数 (HttpComponentsClientHttpRequestFactory) 有关如何解决此问题的任何建议?谢谢

    @Configuration
public class RestClientCertTestConfiguration {

    private String allPassword = "mypassword";

    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder) throws Exception {

        SSLContext sslContext = SSLContextBuilder
                .create()
                .loadKeyMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray(), allPassword.toCharArray())
                .loadTrustMaterial(ResourceUtils.getFile("classpath:myCerts.jks"), allPassword.toCharArray())
                .build();

        HttpClient client = HttpClients.custom()
                .setSSLContext(sslContext)
                .build();

        return builder 
                 //error on this line
                .requestFactory(new HttpComponentsClientHttpRequestFactory(client))
                .build();
    }

}

【问题讨论】:

    标签: java rest spring-boot


    【解决方案1】:

    在 spring boot 1.x 之前,以下方法可以正常工作

    .requestFactory(new HttpComponentsClientHttpRequestFactory(client))
    

    但是在更高版本的 spring boot 像 2.x 中你需要把它改成 -

    .requestFactory(HttpComponentsClientHttpRequestFactory.class)
    

    .requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client))
    

    【讨论】:

    • 我在将 Spring Boot 版本从 1.x 升级到 2.x 时也遇到了同样的问题
    【解决方案2】:

    requestFactory 方法采用类或 Supplier&lt;ClientHttpRequestFactory&gt;,因此您需要这样做:

    .requestFactory(HttpComponentsClientHttpRequestFactory.class)
    

    .requestFactory(() -> new HttpComponentsClientHttpRequestFactory(client))
    

    大概是后者,因为你想传入client

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2017-05-21
      • 2015-06-14
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多