本文是精讲RestTemplate第2篇,前篇的blog拜访地址如下:
- 精讲RestTemplate第1篇-在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是默认的底层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第1篇-在Spring或非Spring环境下如何应用
2.1.切换为okHTTP
首先通过maven坐标将okHTTP的包引入到我的项目中来
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.7.2</version></dependency>
如果是spring 环境下通过如下形式应用OkHttp3ClientHttpRequestFactory初始化RestTemplate bean对象。
@Configurationpublic 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办法相似、不再赘述。
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version></dependency>
应用HttpComponentsClientHttpRequestFactory初始化RestTemplate bean对象
@Bean("httpClient")public RestTemplate httpClientRestTemplate(){ RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory()); return restTemplate;}
欢送关注我的博客,外面有很多精品合集
- 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。
感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源! 。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。
- 《手摸手教你学Spring Boot2.0》
- 《Spring Security-JWT-OAuth2一本通》
- 《实战前后端拆散RBAC权限管理系统》
- 《实战SpringCloud微服务从青铜到王者》
- 《VUE深入浅出系列》