HttpClient实战三:Spring整合HttpClient连接池

简介

在微服务架构或者REST API项目中,使用Spring管理Bean是很常见的,在项目中HttpClient使用的一种最常见方式就是:使用Spring容器XML配置方式代替Java编码方式进行HttpClient连接池的管理,然后将HttpClient的doGet()和doPost()等操作封装成工具类或者Service注入到其他服务中进行调用。

Spring集成HttpClient过程

首先创建一个使用Spring的web项目,在Resources资源文件中添加springContext-httpclient.xml文件

springContext-httpclient.xml

然后,创建属性文件httpclient.properties

httpclient.properties
http.maxTotal=200
http.defaultMaxPerRoute=20
http.connectTimeout=1000
http.connectionRequestTimeout=500
http.socketTimeout=10000
http.staleConnectionCheckEnabled=true

最后,在启动Spring容器时,加载属性文件和springContext-httpclient.xml配置文件即可。

springContext-httpclient.xml配置文件解析

1. 创建连接池管理器对象,并设置最大连接数和每个主机地址并发数,下图所示配置bean的id=httpClientConnectionManager,即对应使用Java代码创建的对象cm。

创建连接池管理器bean

2.创建HttpClient对象并配置请求参数
HttpClient接口和CloseableHttpClient实现类层次结构

HttpClients源码中使用custom()方法构建HttpClientBuilder对象

HttpClients源码

HttpClientBuilder实现在build()方法获取HttpClient对象,先从连接池中获取,如果连接池为空就进行一系列默认的配置并创建连接池对象;如果连接池不为空,就判断连接的可重用性,获取有效连接。HttpClientBuilder部分源码如下:

HttpClientBuilder部分源码

创建httpClientBuilder的过程如下:

image.png

请求参数RequestConfig的配置如下:

请求参数RequestConfig

3.开启线程定时清理无效连接

image.png

总结

Spring整合HttpClient连接池的过程很简单,其实就是将《HttpClient实战二》中使用Java代码方式实现的HttpClient连接池方式,修改成Spring容器管理Bean的方式,这样就不必每次都创建一个信息连接池对象,而是从Spring容器中注入即可。


本订阅号提供Java相关技术分享,从Java编程基础到Java高级技术,从JavaWeb技术基础Jsp、Servlet、JDBC到SSH、SSM开发框架,从REST风格接口设计到分布式项目实战。剖析主流开源技术框架,用亲身实践来谱写深度Java技术日志。“

欢迎关注 Java技术日志 微信订阅号
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,915评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,950评论 6 342
  • 报错信息如下 原因是没有先remove数据就调用deleteRowsAtIndexPaths方法 所以报错.修改后代码为
    slowdony阅读 358评论 0 0
  • 雾色朦胧空气新,云烟缭绕山间至。一雨寥寥淅淅沥,洗染凡尘换生息。 朦朦胧胧青山,淅淅沥沥雨间。醉是山间...
    灰兔兔爱吃胡萝卜阅读 156评论 0 1
  • 建业和我诉苦,他们领导是个下班后生活丰富的人,无论有事与否,天天酒场茶局。作为科室唯一的男职员,作陪几乎成了必须,...
    心甲阅读 332评论 1 0