Feign
Java中如何實現接口調用?即如何發起http請求
前三種方式比較麻煩,在發起請求前,需要將Java對象進行序列化轉為json格式的數據,才能發送,然后進行響應時,還需要把json數據進行反序列化成java對象。
而restTemplate可以自動進行序列化和反序列化,比較方便。
如何使用Feign?
每個變量的含義:
path的值和StockController上的@RequestMapping后的內容一模一樣即可
方法的書寫和Controller層中方法的書寫也一模一樣即可,但是不用寫方法體,大括號也不需要
第四步:注入FeignService,直接調用另一個微服務提供的方法即可
注意:在springMVC中接口的定義不嚴格,如果路徑變量只有一個參數,它可以自動和唯一的形參對應上,但是在定義FeignService接口的時候,它的要求很嚴格,必須加上后面的別名,一對一的指定哪個參數對哪個參數
日志配置
一般通過Feign去調用服務的時候,不會輸出任何日志信息,這對于開發者想調試,修改bug來說很不方便
1. 全局配置:通過定義一個配置類
返回Feign日志類型的一個枚舉,然后修改配置文件中springboot默認的日志級別
注意:加上@Configuration注解就會對所有的服務提供方都生效
springboot默認的日志級別是info,feign的日志級別是debug,比info級別低,所以在springboot的項目中不會輸出,我們還需要調整springboot的日志級別,但是我們不想調整所有日志的輸出級別,只調整springboot針對feign定義的所有接口的輸出日志級別,下面加上了feign定義的所有接口的包路徑
最后就可以輸出了
2.局部配置有兩種方式:
(1)局部配置,調用指定的微服務時才輸出日志
先將注解去掉,然后再在@FeignClient 注解中指定使用的配置類
s
(2)通過配置文件指定對哪個服務生效,再指定日志級別