Spring Cloud Feign使用筆記
Spring Cloud各組件基於HTTP協議進行交互。
結合RestTemplate、Ribbon、Hystrix可以實現介面的調用,即Feign。
1、主應用類添加@EnableFeignClients,開啟Feign。
1
2、 假設提供者服務名"provider-service",有GET介面index。
創建介面ProviderService,使用@FeignClient指定對應的Service,通過Spring MVC的註解配置對應的介面。
2
3、 可以像以前使用Service的方法一樣,使用ProviderService。具體的介面調用,由Feign處理。本例使用Controller調用。
3
根據地址http://127.0.0.1:8080/fproviderindex,即可調用provider-service的index介面。
4、 多種傳參方式,改造Provider的介面如下:
4
基本包含了常用的傳參形式。
Feign的Service做對應的修改:
5
通過以上的代碼,我們可以看出,其實Feign的Service介面內的方法,其實就是提供者Controller里的方法,包括用來傳遞參數的實體類。
如果在初期,Provider的方法不多,寫Service的時候,完全可以把提供者的Controller複製下來,去掉實現的代碼,再把用到的實體類複製到Feign工程里。
但是一旦Provider的實體類、Controller、方法比較多,這麼做起來就比較苦手了,同樣的代碼,Provider開發人員寫一遍,Feign開發人員複製一遍(或者反過來)。
我們可以將Service介面、傳參用的實體類全部提取出一個工程,比如provider-api,然後Feign和Provider分別引入本工程,繼承或實現介面。
6
將前文縮寫的ProviderService介面複製到provider-api工程中,原來註解的@FeignClient(name = "provider-service")去掉。相關實體類也複製到工程中。
Provider、Feign分別引入provider-api工程,具體配置不再贅述。
改造Provider的Controller:
7
Controller實現了ProviderService介面,因為相關的註解都在Service介面里,所以Controller不用再配置。
改造Feign的Service:
8
繼承之後,用@FeignClient註解即可。
5、 Ribbon的配置
9
6、 Hystrix的配置
10
7、 Log的配置
11
這裡是指定ProviderService發起介面調用時,Log日誌級別為Debug。
僅此還是無法輸出日誌的,因為Feign自己的Log級別是NONE,即"No logging",要想看日誌,還要做如下配置:
12
13
在指定的Feign介面上配置即可。
也可以將圖12紅框中的內容放在主應用類中,這就是全局的Log配置了。
8、 服務降級
14
新建實現Feign介面Service的具體類,重寫方法實現降級。
15
在指定的Feign介面上配置即可。
※Spring Cloud客戶端負載均衡Ribbon筆記
※面試題:BeanFactory與FactoryBean
TAG:Java個人學習心得 |