@Autowired自动注入fegin接口,项目无法正常启动,错误信息提示无法找到此类,或者是对应的FallbackFactory没有实现等等。
解决方案:
1、@Autowired提示找不到对应的bean无法自动注入,此时需要在启动类上添加注解指明feign接口地址( @EnableFeignClients(basePackages = "feign接口地址") ),如果引用多个api,可用逗号进行分割,例如 @EnableFeignClients(basePackages = {"com.aaa.sms.api", "com.aaa.ums.api"}) ,相似地址可简写为 @EnableFeignClients(basePackages = "com.aaa.*.api")
2、在启动类上添加注解扫描jar包,@ComponentScan(basePackages = "jar包地址"),用法同上。原因是@SpringBootApplication中的@ComponentScan只会扫描启动类所在包及其子包,引用的jar包因此无法扫描到,另外需要注意的是,当在启动类上添加@ComponentScan注解时,@SpringBootApplication中的@ComponentScan就会失效,添加扫描地址时要考虑到本服务内的包路径问题。
3、在api工程里,想要保留多个feign接口类,value值相同时,在引用的服务内无法启动成功。
这时需要在引用的工程配置文件application.properties/yml里添加
spring.main.allow-bean-definition-overriding = true