RestTemplate实现多种底层HTTP客户端类库的切换用法

网友投稿 776 2022-10-20

RestTemplate实现多种底层HTTP客户端类库的切换用法

RestTemplate实现多种底层HTTP客户端类库的切换用法

目录一、源码分析二、底层实现切换方法2.1.切换为okHTTP2.2.切换为ApacheHttpComponents

本文是精讲RestTemplate第2篇,前篇的blog访问地址如下:

RestTemplate在Spring或非Spring环境下使用精讲

RestTemplate只是对其他的HTTP客户端的封装,其本身并没有实现HTTP相关的基础功能。其底层实现是可以配置切换的,我们本小节就带着大家来看一下RestTemplate底层实现,及如何实现底层基础HTTP库的切换。

一、源码分析

RestTemplate有一个非常重要的类叫做HttpAccessor,可以理解为用于HTTP接触访问的基础类。下图为源码:

从源码中我们可以分析出以下几点信息

RestTemplate 支持至少三种HTTP客户端库。

SimpleClientHttpRequestFactory。对应的HTTP库是java JDK自带的HttpURLConnection。

HttpComponentsAsyncClientHttpRequestFactory。对应的HTTP库是Apache HttpComponents。

OkHttp3ClientHttpRequestFactory。对应的HTTP库是OkHttp

java JDK自带的HttpURLConnection是默QwkVhyVfkZ认的底层HTTP实现客户端SimpleClientHttpRequestFactory,即java JDK自带的HttpURLConnection不支持HTTP协议的Patch方法,如果希望使用Patch方法,需要将底层HTTP客户端实现切换为Apache HttpComponents 或 OkHttp

可以通过设置setRequestFactory方法,来切换RestTemplate的底层HTTP客户端实现类库。

二、底层实现切换方法

从开发人员的反馈,和网上的各种HTTP客户端性能以及易用程度评测来看,OkHttp 优于 Apache HttpComponents、Apache HttpComponents优于HttpURLConnection。所以我个人更建议大家将底层HTTP实现切换为okHTTP。

以下所讲的切换方法,基于第一篇内容:RestTemplate在Spring或非Spring环境下使用精讲

2.1.切换为okHTTP

首QwkVhyVfkZ先通过http://maven坐标将okHTTP的包引入到项目中来

com.squareup.okhttp3

okhttp

4.7.2

如果是spring 环境下通过如下方式使用OkHttp3ClientHttpRequestFactory初始化RestTemplate bean对象。

@Configuration

public class ContextConfig {

@Bean("OKHttp3")

public RestTemplate OKHttp3RestTemplate(){

RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());

return restTemplate;

}

}

如果是非Spring环境,直接new RestTemplate(new OkHttp3ClientHttpRequestFactory()之后使用就可以了。

2.2.切换为Apache HttpComponents

与切换为okHTTP方法类似、不再赘述。

org.apache.httpcomponents

httpclient

4.5.12

使用HttpComponentsClientHttpRequestFactory初始QwkVhyVfkZ化RestTemplate bean对象

@Bean("httpClient")

public RestTemplate httpClientRestTemplate(){

RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());

return restTemplate;

}

以上就是RestTemplate实现多种底层HTTP客户端类库的切换精讲的详细内容,更多关于RestTemplate底层HTTP客户端类库切换的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HDOJ 4627 - The Unsolvable Problem 打表观察..
下一篇:CodeForces 242E - XOR on Segment 二维线段树?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~