服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - RestTemplate实现多种底层HTTP客户端类库的切换用法

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

2022-09-28 15:17字母哥哥 Java教程

这篇文章主要为大家详细的讲解了RestTemplate实现多种底层HTTP客户端类库的切换示例,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步

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

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

RestTemplate只是对其他的HTTP客户端的封装,其本身并没有实现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在Spring或非Spring环境下使用精讲

2.1.切换为okHTTP

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

?
1
2
3
4
5
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.7.2</version>
</dependency>

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

?
1
2
3
4
5
6
7
8
@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方法类似、不再赘述。

?
1
2
3
4
5
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.12</version>
</dependency>

使用HttpComponentsClientHttpRequestFactory初始化RestTemplate bean对象

?
1
2
3
4
5
@Bean("httpClient")
public RestTemplate httpClientRestTemplate(){
    RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
    return restTemplate;
}

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

原文链接:https://zimug.blog.csdn.net/article/details/107755368

延伸 · 阅读

精彩推荐
  • Java教程Java虚拟机类加载器之双亲委派机制模型案例

    Java虚拟机类加载器之双亲委派机制模型案例

    这篇文章主要介绍了Java虚拟机类加载器之双亲委派机制模型案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可...

    洒家肉山大魔王4012021-11-04
  • Java教程MyBatis 动态SQL和缓存机制实例详解

    MyBatis 动态SQL和缓存机制实例详解

    这篇文章主要介绍了MyBatis 动态SQL和缓存机制实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下...

    LWJJJ11122020-12-29
  • Java教程java 设计模式之适配器模式的详解

    java 设计模式之适配器模式的详解

    这篇文章主要介绍了java 设计模式之适配器模式的详解的相关资料,需要的朋友可以参考下...

    daily-note3512020-12-02
  • Java教程Spring Data JPA的Audit功能审计数据库的变更

    Spring Data JPA的Audit功能审计数据库的变更

    数据库审计是指当数据库有记录变更时,可以记录数据库的变更时间和变更人等,这样以后出问题回溯问责也比较方便,本文讨论Spring Data JPA审计数据库变...

    南瓜慢说8922021-09-16
  • Java教程MyBatis执行动态SQL的方法

    MyBatis执行动态SQL的方法

    今天小编就为大家分享一篇关于MyBatis执行动态SQL的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    isea53311122021-06-25
  • Java教程关于Spring框架中异常处理情况浅析

    关于Spring框架中异常处理情况浅析

    最近学习Spring时,认识到Spring异常处理的强大,这篇文章主要给大家介绍了关于Spring框架中异常处理情况的相关资料,通过示例代码介绍的非常详细,需要的朋友...

    ABestRookie11922021-11-04
  • Java教程java反射总结实例详解

    java反射总结实例详解

    这篇文章主要结合实例形式分析了介绍了java基于反射得到对象属性值的方法,Class类,基本数据类型,类的反射等,需要的朋友可以参考下...

    wang_xing19934462020-09-10
  • Java教程@PathParam和@QueryParam区别简析

    @PathParam和@QueryParam区别简析

    这篇文章主要介绍了@PathParam和@QueryParam区别,分享了相关实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    实习小编嘿11622021-03-25