基于spring cloud多個消費端重復(fù)定義feign client的問題
springcloud多個消費端重復(fù)定義feign client
spring cloud消費端調(diào)用服務(wù)提供者,有兩種方式rest+ribbon和Feign,F(xiàn)eign是一個聲明式的偽Http客戶端更為簡單易用,所以我們項目選用Feign作為服務(wù)通訊方式
項目有6個模塊,A,B,C,D,E,F(xiàn),模塊之前必不可少的會存在相互調(diào)用的情況
問題來了。通過FeignClient的方式調(diào)用服務(wù)端,需要在消費端建立對服務(wù)端的調(diào)用的FeignClient接口
- 假如A和B都需要調(diào)用C。
- A調(diào)用C需要在A模塊中建立一個C的FeignClient接口
- B調(diào)用C也需要在B模塊建立一個C的FeignClient接口
- 如果D、E、F都需要用到C模塊,那么還需要建立3個FeignClient。而這些FeignClient里面的代碼都是一樣的。
既然這樣那FeignClient接口能不能定義為一個通用的接口呢。
作者嘗試將FeignClient單獨建立了一個模塊G,將對各個模塊的FeignClient調(diào)用接口集中在模塊G中管理,A,B,C,D,E,F(xiàn)模塊互調(diào)時,只需要在pom中引入G模塊即可。
想法很美好,現(xiàn)實很殘酷,實驗結(jié)果失敗了。
引入模塊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的類沒法掃描到
在spring cloud+feignClient報錯
在spring cloud+feignClient中出現(xiàn)Consider defining a bean of type ‘xxxx' in your configuration 錯誤
大部分主要原因是沒有啟用
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea使用帶provide修飾依賴導(dǎo)致ClassNotFound
程序打包到Linux上運行時,若Linux上也有這些依賴,為了在Linux上運行時避免依賴沖突,可以使用provide修飾,本文主要介紹了idea使用帶provide修飾依賴導(dǎo)致ClassNotFound,下面就來介紹一下解決方法,感興趣的可以了解一下2024-01-01
git stash 和unstash的使用操作,git unstash failed
這篇文章主要介紹了git stash 和unstash的使用操作,git unstash failed,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
教你用Springboot實現(xiàn)攔截器獲取header內(nèi)容
項目中遇到一個需求,對接上游系統(tǒng)是涉及到需要增加請求頭,請求頭的信息是動態(tài)獲取的,需要動態(tài)從下游拿到之后轉(zhuǎn)給上游,文中非常詳細的介紹了該需求的實現(xiàn),需要的朋友可以參考下2021-05-05

