簡(jiǎn)介
在微服務(wù)架構(gòu)或者REST API項(xiàng)目中,使用Spring管理Bean是很常見的仔蝌,在項(xiàng)目中HttpClient使用的一種最常見方式就是:使用Spring容器XML配置方式代替Java編碼方式進(jìn)行HttpClient連接池的管理澜薄,然后將HttpClient的doGet()和doPost()等操作封裝成工具類或者Service注入到其他服務(wù)中進(jìn)行調(diào)用朝卒。
Spring集成HttpClient過程
首先創(chuàng)建一個(gè)使用Spring的web項(xiàng)目耍群,在Resources資源文件中添加springContext-httpclient.xml文件
然后木西,創(chuàng)建屬性文件httpclient.properties
httpclient.properties
http.maxTotal=200
http.defaultMaxPerRoute=20
http.connectTimeout=1000
http.connectionRequestTimeout=500
http.socketTimeout=10000
http.staleConnectionCheckEnabled=true
最后畴栖,在啟動(dòng)Spring容器時(shí),加載屬性文件和springContext-httpclient.xml配置文件即可八千。
springContext-httpclient.xml配置文件解析
1. 創(chuàng)建連接池管理器對(duì)象吗讶,并設(shè)置最大連接數(shù)和每個(gè)主機(jī)地址并發(fā)數(shù)燎猛,下圖所示配置bean的id=httpClientConnectionManager,即對(duì)應(yīng)使用Java代碼創(chuàng)建的對(duì)象cm照皆。
2.創(chuàng)建HttpClient對(duì)象并配置請(qǐng)求參數(shù)
HttpClient接口和CloseableHttpClient實(shí)現(xiàn)類層次結(jié)構(gòu)
HttpClients源碼中使用custom()方法構(gòu)建HttpClientBuilder對(duì)象
HttpClientBuilder實(shí)現(xiàn)在build()方法獲取HttpClient對(duì)象重绷,先從連接池中獲取,如果連接池為空就進(jìn)行一系列默認(rèn)的配置并創(chuàng)建連接池對(duì)象膜毁;如果連接池不為空昭卓,就判斷連接的可重用性,獲取有效連接瘟滨。HttpClientBuilder部分源碼如下:
創(chuàng)建httpClientBuilder的過程如下:
請(qǐng)求參數(shù)RequestConfig的配置如下:
3.開啟線程定時(shí)清理無(wú)效連接
總結(jié)
Spring整合HttpClient連接池的過程很簡(jiǎn)單候醒,其實(shí)就是將《HttpClient實(shí)戰(zhàn)二》中使用Java代碼方式實(shí)現(xiàn)的HttpClient連接池方式,修改成Spring容器管理Bean的方式杂瘸,這樣就不必每次都創(chuàng)建一個(gè)信息連接池對(duì)象倒淫,而是從Spring容器中注入即可。
“
本訂閱號(hào)提供Java相關(guān)技術(shù)分享败玉,從Java編程基礎(chǔ)到Java高級(jí)技術(shù)敌土,從JavaWeb技術(shù)基礎(chǔ)Jsp、Servlet运翼、JDBC到SSH返干、SSM開發(fā)框架,從REST風(fēng)格接口設(shè)計(jì)到分布式項(xiàng)目實(shí)戰(zhàn)南蹂。剖析主流開源技術(shù)框架犬金,用親身實(shí)踐來(lái)譜寫深度Java技術(shù)日志念恍ד