一蒸苇、概述
Feign是一個聲明式WebService客戶端。使用Feign能讓編寫Web Service客戶端更加簡單, 它的使用方法是定義一個接口吮旅,然后在上面添加注解填渠,同時也支持JAX-RS標(biāo)準(zhǔn)的注解。Feign也支持可拔插式的編碼器和解碼器鸟辅。Spring Cloud對Feign進(jìn)行了封裝氛什,使其支持了Spring MVC標(biāo)準(zhǔn)注解和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支持負(fù)載均衡匪凉。
Feign是一個聲明式的Web服務(wù)客戶端枪眉,使得編寫Web服務(wù)客戶端變得非常容易,
只需要創(chuàng)建一個接口再层,然后在上面添加注解即可贸铜。
二、Feign能干什么
Feign旨在使編寫Java Http客戶端變得更容易聂受。
前面在使用Ribbon+RestTemplate時蒿秦,利用RestTemplate對http請求的封裝處理,形成了一套模版化的調(diào)用方法蛋济。但是在實(shí)際開發(fā)中棍鳖,由于對服務(wù)依賴的調(diào)用可能不止一處,往往一個接口會被多處調(diào)用碗旅,所以通常都會針對每個微服務(wù)自行封裝一些客戶端類來包裝這些依賴服務(wù)的調(diào)用渡处。所以,F(xiàn)eign在此基礎(chǔ)上做了進(jìn)一步封裝祟辟,由他來幫助我們定義和實(shí)現(xiàn)依賴服務(wù)接口的定義医瘫。在Feign的實(shí)現(xiàn)下,我們只需創(chuàng)建一個接口并使用注解的方式來配置它(以前是Dao接口上面標(biāo)注Mapper注解,現(xiàn)在是一個微服務(wù)接口上面標(biāo)注一個Feign注解即可)旧困,即可完成對服務(wù)提供方的接口綁定醇份,簡化了使用Spring cloud Ribbon時稼锅,自動封裝服務(wù)調(diào)用客戶端的開發(fā)量。
三僚纷、Feign集成了Ribbon
利用Ribbon維護(hù)servicespringcloud-dept的服務(wù)列表信息矩距,并且通過輪詢實(shí)現(xiàn)了客戶端的負(fù)載均衡。而與Ribbon不同的是畔濒,通過feign只需要定義服務(wù)綁定接口且以聲明式的方法剩晴,優(yōu)雅而簡單的實(shí)現(xiàn)了服務(wù)調(diào)用
Feign通過接口的方法調(diào)用Rest服務(wù)(之前是Ribbon+RestTemplate),
通過Feign直接找到服務(wù)接口侵状,由于在進(jìn)行服務(wù)調(diào)用的時候融合了Ribbon技術(shù)赞弥,所以也支持負(fù)載均衡作用。