以这种方式创建RestTemplate有什么区别?
RestTemplate restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(connectTimeout))
.setReadTimeout(Duration.ofMillis(readTimeout))
.build();这条路
CloseableHttpClient httpClient = HttpClientBuilder.create().disableCookieManagement().build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
factory.setReadTimeout(readTimeout);
factory.setConnectTimeout(connectTimeout);
RestTemplate restTemplate = new RestTemplate(factory);?
发布于 2019-08-15 16:32:14
我认为您关于范围restTemplateBuilder.As的问题在Spring中提到:
若要使任何自定义的范围尽可能缩小RestTemplateBuilder,请注入自动配置的,然后根据需要调用其方法。每个方法调用都返回一个新的RestTemplateBuilder实例,因此自定义只影响构建器的这种使用。
示例:
private RestTemplate restTemplate;
@Autowired
public HelloController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}若要进行application-wide,附加自定义,请使用RestTemplateCustomizer bean。所有这些bean都会自动在自动配置的RestTemplateBuilder中注册,并应用于使用它构建的任何模板。
示例
static class ProxyCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
HttpHost proxy = new HttpHost("proxy.example.com");
HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
@Override
public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context)
throws HttpException {
if (target.getHostName().equals("192.168.0.5")) {
return null;
}
return super.determineProxy(target, request, context);
}
}).build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
}注:用于狭窄地使用RestTemplateBuilder.用于应用程序范围内使用RestTemplateCustomizer。
参考链接:参考链接
更详细的示例:附加例子
https://stackoverflow.com/questions/57512238
复制相似问题