美文网首页我爱编程
RestTemplate的使用

RestTemplate的使用

作者: 小黑泡泡 | 来源:发表于2018-05-24 10:11 被阅读0次

学习参考:https://www.cnblogs.com/softidea/p/5977375.html

RestTemplate有两个构造方法,分别是:

publicRestTemplate() {/**              ...初始化过程          */}

publicRestTemplate(ClientHttpRequestFactory requestFactory) {this();

    setRequestFactory(requestFactory);

}

其中,第二个构造方法中可以传入ClientHttpRequestFactory参数,第一个进行默认初始化,因为我们经常需要对请求超时进行设置并能够对超时进行后续处理,而第一个构造方法,我们无法控制超时时间,第二个构造中的ClientHttpRequestFactory接口的实现类中存在timeout属性,因此选用第二个构造方法。

SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(1000); requestFactory.setReadTimeout(1000); RestTemplate restTemplate =new RestTemplate(requestFactory);

注意:ClientHttpRequestFactory 接口有4个实现类,分别是:

AbstractClientHttpRequestFactoryWrapper 用来装配其他request factory的抽象类。

CommonsClientHttpRequestFactory 允许用户配置带有认证和http连接池的httpclient,已废弃,推荐用HttpComponentsClientHttpRequestFactory。

HttpComponentsClientHttpRequestFactory 同2.

SimpleClientHttpRequestFactory 接口的一个简单实现,可配置proxy,connectTimeout,readTimeout等参数。

配置案例:

private ClientHttpRequestFactory getClientHttpRequestFactory() {

    int timeout = 5000;

    RequestConfig config = RequestConfig.custom()

      .setConnectTimeout(timeout)

      .setConnectionRequestTimeout(timeout)

      .setSocketTimeout(timeout)

      .build();

    CloseableHttpClient client = HttpClientBuilder

      .create()

      .setDefaultRequestConfig(config)

      .build();

    return new HttpComponentsClientHttpRequestFactory(client);

RestTemplate 设置 RequestFactory

其实任何有连接的地方都会有连接池的概念,比如数据库连接等,这里也不例外,肯定也会有,RestTemplate 默认有两种工厂对象实现方式,都是 ClientHttpRequestFactory 的子类。如下

1)SimpleClientHttpRequestFactory 底层使用 java.net.HttpUrlConnection,可配置证书

2)HttpComponentsClientHttpRequestFactory 底层使用Apache HttpClient访问远程的Http服务,使用HttpClient同样可以配置连接池和证书等信息,而且功能更强大,配置项更多。

RequestFactory 的配置方式

1)使用XML配置,就是配置JavaBean

2)使用代码配置,就是初始化这个对象

无论上面那种方式配置,都是配置外壳 RestTemplate,真正发送请求的 request 对象其实都是由工厂管理的,所以我们不关心连接池的管理,只是配置连接池初始化的一些参数而已。

这个可以参考:

http://www.open-open.com/lib/view/open1436018677419.html

相关文章

网友评论

    本文标题:RestTemplate的使用

    本文链接:https://www.haomeiwen.com/subject/ompjjftx.html