iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >RestTemplate如何实现多种底层HTTP客户端类库的切换
  • 243
分享到

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

2023-06-29 12:06:30 243人浏览 独家记忆
摘要

这篇“RestTemplate如何实现多种底层Http客户端类库的切换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Rest

这篇“RestTemplate如何实现多种底层Http客户端类库的切换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“RestTemplate如何实现多种底层HTTP客户端类库的切换”文章吧。

一、源码分析

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

RestTemplate如何实现多种底层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;}

以上就是关于“RestTemplate如何实现多种底层HTTP客户端类库的切换”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: RestTemplate如何实现多种底层HTTP客户端类库的切换

本文链接: https://www.lsjlt.com/news/324937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作