當前位置:編程學習大全網 - 源碼下載 - SpringCloud + Zookeeper + Feign整合及Feign原理

SpringCloud + Zookeeper + Feign整合及Feign原理

Spring Cloud 與 Zookeeper的整合只需要添加相關的starter依賴和增加相關註解即可完成。

pom.xml 如下:

bootstrap.yml 如下:

最後開啟服務的註冊與發現

service 和controller實現

筆者加入了swagger,如果需要只需加入如下依賴和配置:

至此,spring cloud與zookeeper的整合就完成了,調用結果如下:

為了測試與Feign的整合,再構建壹個消費者:與上述構建的過程類似。

pom.xml 增加spring-cloud-starter-openfeign依賴

bootstrap.yaml:

開啟服務註冊與發現,@EnableFeignClients註解註冊FeignClient

@FeignClient註冊聲明定義FeignClient,筆者以兩種方式定義了兩個FeignClient:

1.通過請求路徑定義FeignClient

2.通過生產者(即上述構建的helloService)暴露出來的接口定義FeignClient

controller 測試:

測試結果如下:

知道了如何將SpringCloud, Zookeeper 和Feign進行整合,我們知道了怎麽使用,更重要的是要知道裏面的原理,做到知其然更要知其所以然。

通過上述對整合過程的描述中可以發現,@EnableFeignClients和@FeignClient兩個註解是將Feign整合進Spring Cloud的重要組成部分,因此,從這兩個註解入手來了解Feign。

@EnableFeignClients註解通過@Import引入了FeignClientsRegistrar進行feign客戶端的註冊, 同時FeignClientsRegistrar通過實現ImportBeanDefinitionRegistrar來將bean註冊spring容器中:

至此,我們知道了通過@EnableFeignClients和@FeignClient兩個註解以及其相關屬性,在服務啟動時,將每個feign client 以及其對應的配置和每個客戶端通用的配置以bean的方式註冊完到spring容器中。

當使用@Autowired註解自動註入FeignClient時,Spring容器會使用註冊FeignClient用到的FeignClientFactoryBean為其生成FeignClient實例。

默認使用的targeter是HystrixTargeter,根據builder的類型設置不同的屬性,並生產Feign client

從上面的分析可以得出,當服務啟動時,通過@EnableFeignClients註解,啟動對標註了@FeignClient註解的類進行掃描和註冊,通過FeignClientFactoryBean將FeignClient註冊到Spring容器中。當使用@Autowired註解進行自動註入時,註冊到Spring容器中FeignClient會以動態代理的形式註入,這些動態代理中包含了接口方法的methodHandler用以處理調用轉發。

  • 上一篇:我想問有沒有現代文學小說裏的男的是鴨子?
  • 下一篇:如何制作自己的android升級包
  • copyright 2024編程學習大全網