面試篇:Spring Cloud Feign

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

Feign客戶端

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. 簡單源碼分析

源碼解析
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容