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的类无法扫描到

相关文章
相关标签/搜索