1. Feign簡介
Feign是Netflix開發(fā)的聲明式、模塊化的HTTP客戶端,可幫助我們更加便捷、優(yōu)雅地調(diào)用HTTP API。Spring Cloud 對Feign進(jìn)行了增強,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,從而讓Feign的使用更加方便。
2. Feign配置
在啟動類添加@EnableFeignClients
創(chuàng)建一個客戶端接口,在接口上添加@FeignClient

2.1 使用Java代碼自定義Feign配置
在Spring Cloud中,F(xiàn)eign的默認(rèn)配置是FeignClientsConfiguration,該類定義了Feign默認(rèn)使用的編碼器、解碼器、所使用的契約等。
Spring Cloud 允許通過@FeignClient的configuration屬性自定義Feign的配置,自定義配置優(yōu)先級比FeignClientsConfiguration要高。(單個Feign Client)
Spring Cloud 允許通過@EnableFeignClients的defaultConfiguration屬性自定義Feign的配置。(全局配置)
2.2 使用屬性自定義Feign配置
從Spring Cloud Netflix1.4.0開始,F(xiàn)eign支持使用屬性自定義,這種方式比使用Java代碼配置的方式更加方便。
????connectTimeOut??? //配置連接超時
????readTimeout?????? //配置讀取超時
????loggerLevel???????? //配置Feign日志級別
????encoder?????????? //編碼器(對請求進(jìn)行處理)
????decoder?????????? //解碼器(對響應(yīng)進(jìn)行處理)
????retryer??????????? //配置重試
????requestInterceptors???? //配置攔截器
3. Feign對壓縮的支持
//開啟請求壓縮
feign.compression.request.enabled = true
//對哪些媒體類型進(jìn)行壓縮
feign.compression.request.mime-types =text/xml,application/xml,application/json
//壓縮請求的最小值
feign.compression.request.min-request-size= 2048
//開啟響應(yīng)壓縮
feign.compression.response.enable = true
4. Feign的日志
Feign的日志打印只會打印DEBUG級別,但可以配置Feign的日志級別:
NONE:不記錄任何日志(默認(rèn)值)。
BASIC:記錄請求方法、URL、響應(yīng)狀態(tài)代碼以及執(zhí)行時間。
HEADERS:記錄BASIC級別的基礎(chǔ)上,記錄請求和響應(yīng)的header。
FULL:記錄請求和響應(yīng)的header、body和元數(shù)據(jù)。
5. Feign的文件上傳
添加依賴:

添加配置:

6. 簡單源碼分析
