解決@FeignClient註入service失敗問題
@FeignClient註入service失敗
在入口類上方加入註解
@EnableFeignClients(basePackages = {"com.ritoinfo.framework.evo.sp.sys.api","com.yqjr.sp.eco.member"})
由於使用pom引入service jar包,如果不加basePackage,會找不到包所在路徑
Feign註入失敗之坑
今天碰到一個很坑的問題,feign 註入失敗。
錯誤信息
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
12-18 15:29:57.654 ERROR [o.s.b.diagnostics.LoggingFailureAnalysisReporter] –
***************************
APPLICATION FAILED TO START
***************************Description:
Field messageFeign in com.pance.scheduler.mdm.dataCenterTask.DataCenter required a bean of type 'com.pance.common.feign.MessageFeign' that could not be found.
The injection point has the following annotations:
– @org.springframework.beans.factory.annotation.Autowired(required=true)Action:
Consider defining a bean of type 'com.pance.common.feign.MessageFeign' in your configuration.
很簡單的一個報錯信息,
直接看Application ,發現以及包含註解 @EnableFeignClients,以及 @ComponentScan("com.pance"),並且feign 也包含在 com.pance目錄下。
查瞭良久,
終於在最崩潰的時候,發現瞭一個細節的坑,feign 時在另外的common 包中引入的,雖然@ComponentScan("com.pance") 指定瞭掃描路徑包含瞭feign 的路徑,但是feign如果不是在相同的module 下,就必須加上 自己的掃描范圍,例如
@EnableFeignClients(basePackages = "com.pance")
加上之後,問題解決
@EnableFeignClients(basePackages = "com.pance") @ComponentScan("com.pance") @EnableScheduling @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class SchedulerApplication { public static void main(String[] args) { /*only start one application*/ SpringApplication.run(SchedulerApplication.class, args); } }
發現網上說都是要配置@EnableFeignClients,以及引入jar 包,但是這個basePackage 這個值很少有說明。就寫一下自己踩坑的慘痛經歷。
Feign的jar包如果和服務在同一個工程下,需要指定basePackage
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 基於spring cloud多個消費端重復定義feign client的問題
- springboot 啟動如何排除某些bean的註入
- SpringCloud全面解析@FeignClient標識接口的過程
- Spring Cloud OpenFeign 遠程調用
- 關於註解FeignClient的使用規范