本文是精讲 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 对象。
@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 办法相似、不再赘述。
<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 深入浅出系列》