上一篇已經寫過ribbon客戶端負載均衡的用法了,這篇主要是介紹feign的用法,首先我們必須了解feign是什么?能干嘛?怎么用?
這里簡單介紹一下,然后進行代碼測試
1、概述
Feign是一個聲明式的web服務客戶端,使得編寫Web服務客戶端變得非常容易,只需要創建一個接口,然后在上面添加注解即可。
2、能干嘛
前面在使用Ribbon+RestTemplate時,利用RestTemplate對http請求的封裝處理,形成了一套模板化的調用方法。但是在實際開發中,由於對服務依賴的調用可能不止一處,往往一個接口會被多出調用,所以通常都會針對每個微服務自行封裝一些客戶端類來包裝這些依賴服務的調用。所以,Feifn在此基礎上做了進一步封裝,有他來幫助我們定義和實現依賴服務接口的定義。在Feign的實現下,我們只需創建一個接口並使用注解的方式來配置它(以前是Dao接口上標注Mapper注解,現在是一個微服務接口上面注解一個Feign注解即可),即可完成對服務提供方的接口綁定,簡化了使用Spring cloud Ribbon時,自動封裝服務調用客戶端的開發量
3、怎么用
(1)、首先,添加pom.xml中的依賴,在study-web和study-ms中同時都加入Feign的依賴
注:stusy-web和study-ms都是沿用上幾篇搭建的項目,不知道的往上幾篇翻翻
(2)、 在study-ms的服務里添加查詢方法
controller層
service層
mapper層
有關sql的配置是
(3)、在study-api服務中添加接口,加上@FeignClient的注解,name 的是服務名
(4)、在study-web中添加測試方法
在study-web的啟動類上添加注解@EnableFeignClients
4、測試
啟動study-eureka(8001)、study-ms(8003)、study-web(8002)
通過postman測試接口,結果為:
總結-feign和ribbon
Feign集成了Ribbon
利用Ribbon維護了MicroServiceCloud-Dept的服務列表信息,並且通過輪詢實現了客戶端的負載均衡,而與Ribbon不同的是,通過Feign只需要定義服務綁定接口且以聲明式的方法,優雅而簡單的實現了服務調用
Feign通過接口的方法調用Rest服務(之前是Ribbon+RestTemplate),
該請求發送給Eureka服務器(http://MICROSERVICECLOUD-DEPT/dept/list),
通過Feign直接找到服務接口,由於在進行服務調用的時候融合了Ribbon技術,所以也支持負載均衡作用。