java spring 连接池_HttpClient实战三:Spring整合HttpClient连接池

简介

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

Spring集成HttpClient过程

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

e671cd35aeecf49399d69c2f542cf77c.png

springContext-httpclient.xml

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

httpclient.properties

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

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

aa86ef08f3d17b6d13facf1722c000c2.png

springContext-httpclient.xml配置文件解析

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

2739e676fafe003e73312b0643de689f.png

创建连接池管理器bean

2.创建HttpClient对象并配置请求参数

HttpClient接口和CloseableHttpClient实现类层次结构

2c3158e359162f6dc1b8c8dade4a3d3f.png

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

d4d3c5741975c4707308fd9b2328ae06.png

HttpClients源码

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

f77cc752b4f24623795a0eadc3a05549.png

HttpClientBuilder部分源码

创建httpClientBuilder的过程如下:

df414127aee6a47169d6cdbdc213b05d.png

image.png

请求参数RequestConfig的配置如下:

b733bebac7ca11a06982dfc6d3ac3a5c.png

请求参数RequestConfig

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

053e1b7ffe7326a93e526775fe3355fa.png

image.png

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值