简介

在微服务架构或者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容器中注入即可。

转自:https://www.jianshu.com/p/363e3d7c235b

HttpClient实战三:Spring整合HttpClient连接池的更多相关文章

  1. 【转】SSH中 整合spring和proxool 连接池

    [摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简 ...

  2. HttpClient官方sample代码的深入分析(连接池)

    前言   之前一直使用apache的httpclient(4.5.x), 进行http的交互处理. 而httpclient实例则使用了http连接池, 而一旦涉及到连接池, 那会不会在使用上有些隐藏很 ...

  3. spring整合httpclient

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://w ...

  4. spring常用的连接池属性文件配置

    (一) DBCP 引入jar文件 commons-dbcp-1.2.1.jar commons-pool-1.3.jar二个包. spring配置文件 <bean id="dataSo ...

  5. springboot整合druid连接池、mybatis实现多数据源动态切换

    demo环境: JDK 1.8 ,Spring boot 1.5.14 一 整合durid 1.添加druid连接池maven依赖 <dependency> <groupId> ...

  6. Spring使用proxool连接池 管理数据源

    一.Proxool连接池简介及其配置属性概述 Proxool是一种Java数据库连接池技术.是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是这个连接池提供监控 ...

  7. spring 使用c3po连接池

    1 数据源:能够简单理解为数据的来源. 2 连接池:是缓存一定数量的数据库连接,当程序须要数据库连接的时候,直接在连接池中获取空暇的连接,使用完再放回连接池中,此连接又变成空暇状态,等待下一次连接. ...

  8. spring hibernate4 c3p0连接池配置

    c3p0-0.9.1.2.jar,c3p0-oracle-thin-extras-0.9.1.2.jar,点此下载 <bean id="dataSource" class=& ...

  9. spring整合redis连接

    两种连接方式:(写了一半,未测试) spring xml: <?xml version="1.0" encoding="UTF-8"?> <b ...

随机推荐

  1. 使用hdfs-mount挂载HDFS

    目录 1.特性(计划)简介 2.构建程序 3.使用hdfs-mount挂载HDFS hdfs-mount是一个将HDFS挂载为本地Linux文件系统的工具,使用go语言开发,不依赖libdfs和jav ...

  2. vs2015 如何更改背景主题颜色

    打开vs2015 步骤:工具--> 选项 -->环境-->常规-->主题设置

  3. 【JavaScript】JavaScript中的ActiveXObject对象

    JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用.    使用方法: newObj = new ActiveXObject( servername.t ...

  4. HIVE出现Read past end of RLE integer from compressed stream Stream for column 1 kind LENGTH position: 359 length: 359 range: 0错误

    错误日志 Diagnostic Messages for this Task: Error: java.io.IOException: java.io.IOException: java.io.EOF ...

  5. Eureka Server 集群配置

    注册中心: debug: true spring: application: name: eureka-server logging: level: com.netflix.eureka: 'off' ...

  6. 【GMT43智能液晶模块】例程十七:LAN_UDP实验——以太网数据传输

    源代码下载链接: 链接:https://pan.baidu.com/s/1CXeIohlqs7OjrgC9-QZjzg 提取码:be3d 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...

  7. (转载)理解Spatial Transformer Networks

    理解Spatial Transformer Networks 转载于:知乎-SIGAI 书的购买链接 书的勘误,优化,源代码资源 获取全文PDF请查看:理解Spatial Transformer Ne ...

  8. 设置table表格的单元格间距两种方式

    table表格里设置单元格td之间的间距,通常用cellspacing设置单元格间距,有时候该属性可能无效,或需要用其他方式时,可用其他方式实现,例如在背景是白色背景的时候,设置单元格td的borde ...

  9. leetcode刷题系列(一) 26题 删除排序数组中的重复项

    题干 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示 ...

  10. Angular 修改路由策略,改为使用hash路由,即带#号URL

    修改app.module.ts如下