在深入挖掘
RestTemplateBuilder
属于
弹簧套2.1.x
,我发现他们已经移除了这个方法。
requestFactory(ClientHttpRequestFactory requestFactory)
. 这意味着你不能再注射
ClientHttpRequestFactory
对象进入
requestFactory
方法。
但是,它接受
Supplier<ClientHttpRequestFactory>
作为现在的输入。所以你只需要注册一个
HttpComponentsClientHttpRequestFactory
在Spring上下文中bean并传递
ClientHttpRequestFactorySupplier
到
请求工厂
方法。供应商将自动检测
httpcomponentsClienthttpRequestFactory
并返回所需的resttemplate。
请参阅以下代码:
@Bean
public HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() {
PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
poolingConnectionManager.setMaxTotal(restTemplateProps.getMaxConnectionsPerPool());
poolingConnectionManager.setDefaultMaxPerRoute(restTemplateProps.getMaxDefaultConnectionPerRoute());
CloseableHttpClient client = HttpClientBuilder.create().setConnectionManager(poolingConnectionManager).build();
HttpComponentsClientHttpRequestFactory clientHttpRequestFactory =
new HttpComponentsClientHttpRequestFactory(client);
clientHttpRequestFactory.setConnectTimeout(restTemplateProps.getConnectionTimeout());
clientHttpRequestFactory.setReadTimeout(restTemplateProps.getSocketTimeout());
return clientHttpRequestFactory;
}
@Bean
public RestTemplate authRestTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.requestFactory(new ClientHttpRequestFactorySupplier()).build();
}
对于那些对SpringBoot 2.1.x中的restTemplateBuilder所做的所有更改感兴趣的用户,请参阅
this
.