spring cloud多個消費端重複定義feign client問題

spring cloud消費端調用服務提供者,有兩種方式rest+ribbon和Feign,Feign是一個聲明式的僞Http客戶端更爲簡單易用,因此咱們項目選用Feign做爲服務通信方式spring

項目有6個模塊,A,B,C,D,E,F,模塊以前必不可少的會存在相互調用的狀況ide

問題來了。經過FeignClient的方式調用服務端,須要在消費端創建對服務端的調用的FeignClient接口ui

假如A和B都須要調用C。spa

A調用C須要在A模塊中創建一個C的FeignClient接口rest

B調用C也須要在B模塊創建一個C的FeignClient接口code

若是D、E、F都須要用到C模塊,那麼還須要創建3個FeignClient。而這些FeignClient裏面的代碼都是同樣的。component

既然這樣那FeignClient接口能不能定義爲一個通用的接口呢。blog

做者嘗試將FeignClient單獨創建了一個模塊G,將對各個模塊的FeignClient調用接口集中在模塊G中管理,A,B,C,D,E,F模塊互調時,只須要在pom中引入G模塊便可。接口

 

想法很美好,現實很殘酷,實驗結果失敗了。ip

引入模塊G後,啓動SpringBoot,控制報錯。找不到bean。

消費端啓動類Application加了掃描包註解@ComponentScan(basePackages={"com.chelizi.feign.intf"})

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean of type 'com.chelizi.feign.intf.system.SysSerialNumberController' that could not be found.


Action:

Consider defining a bean of type 'com.chelizi.feign.intf.system.SysSerialNumberController' in your configuration.

 加了上面的@ComponentScan註解後,com.chelizi.feign.intf下的普通@Component或者@Service的JavaBean是能夠被掃描到的,可是@FeignClient的類無法掃描到

相關文章
相關標籤/搜索