當前位置:
首頁 > 知識 > Spring Cloud Feign使用筆記

Spring Cloud Feign使用筆記

Spring Cloud各組件基於HTTP協議進行交互。

結合RestTemplate、Ribbon、Hystrix可以實現介面的調用,即Feign。



1、主應用類添加@EnableFeignClients,開啟Feign。

Spring Cloud Feign使用筆記

1

2、 假設提供者服務名"provider-service",有GET介面index。

創建介面ProviderService,使用@FeignClient指定對應的Service,通過Spring MVC的註解配置對應的介面。

Spring Cloud Feign使用筆記

2

3、 可以像以前使用Service的方法一樣,使用ProviderService。具體的介面調用,由Feign處理。本例使用Controller調用。

Spring Cloud Feign使用筆記

3

根據地址http://127.0.0.1:8080/fproviderindex,即可調用provider-service的index介面。

4、 多種傳參方式,改造Provider的介面如下:

Spring Cloud Feign使用筆記

4

基本包含了常用的傳參形式。

Feign的Service做對應的修改:

Spring Cloud Feign使用筆記

5

通過以上的代碼,我們可以看出,其實Feign的Service介面內的方法,其實就是提供者Controller里的方法,包括用來傳遞參數的實體類。

如果在初期,Provider的方法不多,寫Service的時候,完全可以把提供者的Controller複製下來,去掉實現的代碼,再把用到的實體類複製到Feign工程里。

但是一旦Provider的實體類、Controller、方法比較多,這麼做起來就比較苦手了,同樣的代碼,Provider開發人員寫一遍,Feign開發人員複製一遍(或者反過來)。

我們可以將Service介面、傳參用的實體類全部提取出一個工程,比如provider-api,然後Feign和Provider分別引入本工程,繼承或實現介面。

Spring Cloud Feign使用筆記

6

將前文縮寫的ProviderService介面複製到provider-api工程中,原來註解的@FeignClient(name = "provider-service")去掉。相關實體類也複製到工程中。

Provider、Feign分別引入provider-api工程,具體配置不再贅述。

改造Provider的Controller:

Spring Cloud Feign使用筆記

7

Controller實現了ProviderService介面,因為相關的註解都在Service介面里,所以Controller不用再配置。

改造Feign的Service:

Spring Cloud Feign使用筆記

8

繼承之後,用@FeignClient註解即可。

5、 Ribbon的配置

Spring Cloud Feign使用筆記

9

6、 Hystrix的配置

Spring Cloud Feign使用筆記

10

7、 Log的配置

Spring Cloud Feign使用筆記

11

這裡是指定ProviderService發起介面調用時,Log日誌級別為Debug。

僅此還是無法輸出日誌的,因為Feign自己的Log級別是NONE,即"No logging",要想看日誌,還要做如下配置:

Spring Cloud Feign使用筆記

12

Spring Cloud Feign使用筆記

13

在指定的Feign介面上配置即可。

也可以將圖12紅框中的內容放在主應用類中,這就是全局的Log配置了。

8、 服務降級

Spring Cloud Feign使用筆記

14

新建實現Feign介面Service的具體類,重寫方法實現降級。

Spring Cloud Feign使用筆記

15

在指定的Feign介面上配置即可。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Cloud客戶端負載均衡Ribbon筆記
面試題:BeanFactory與FactoryBean

TAG:Java個人學習心得 |