首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用新的RestTemplate和restTemplateBuilder创建RestTemplate

用新的RestTemplate和restTemplateBuilder创建RestTemplate
EN

Stack Overflow用户
提问于 2019-08-15 15:37:16
回答 1查看 4K关注 0票数 3

以这种方式创建RestTemplate有什么区别?

代码语言:javascript
复制
RestTemplate restTemplate = restTemplateBuilder
                .setConnectTimeout(Duration.ofMillis(connectTimeout))
                .setReadTimeout(Duration.ofMillis(readTimeout))
                .build();

这条路

代码语言:javascript
复制
CloseableHttpClient httpClient = HttpClientBuilder.create().disableCookieManagement().build();
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);

        factory.setReadTimeout(readTimeout);
        factory.setConnectTimeout(connectTimeout);
        RestTemplate restTemplate = new RestTemplate(factory);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-15 16:32:14

我认为您关于范围restTemplateBuilder.As的问题在Spring中提到:

restTemplateBuilder范围

若要使任何自定义的范围尽可能缩小RestTemplateBuilder,请注入自动配置的,然后根据需要调用其方法。每个方法调用都返回一个新的RestTemplateBuilder实例,因此自定义只影响构建器的这种使用。

示例:

代码语言:javascript
复制
private RestTemplate restTemplate;

@Autowired
public HelloController(RestTemplateBuilder builder) {
    this.restTemplate = builder.build();
}

若要进行application-wide,附加自定义,请使用RestTemplateCustomizer bean。所有这些bean都会自动在自动配置的RestTemplateBuilder中注册,并应用于使用它构建的任何模板。

示例

代码语言:javascript
复制
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

参考链接:参考链接

更详细的示例:附加例子

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57512238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档