feign调用 fallback调用时启动报错,请问如何解决,将fallback注释了就可以进行正常启动

Blade 未结 4 5644
a756684713
a756684713 剑者 2019-06-05 11:14

Error creating bean with name 'deptController' defined in file [E:\IdeaWordSpace\SafetyStandards\blade-service\blade-system\target\classes\org\springblade\system\controller\DeptController.class]: Unsatisfied dependency expressed through constructor parameter 4; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springblade.anbiao.guanlijigouherenyuan.feign.IOrganizationsClient': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No fallback instance of type class org.springblade.anbiao.guanlijigouherenyuan.feign.IOrganizationsClientBack found for feign client blade-anbiao


4条回答
  • 2020-12-03 10:59

    我来解释一下为什么作者大大说的添加@Component都无效。其实不是无效,而是作者理想化的包目录都是org.springblade,如果我们自定义了自己的业务模块,命名不叫这个,那么配了@Component注解的fallback实例也是扫描不到的。因为SpringBoot默认扫描Application同级目录下的所有包。但是业务模块的包名不一致。

    而且要注意的是:就算在@EnableBladeFeign里面加业务模块的包名,也还是报错:无法找到fallback实例,那是因为这个仅仅是找包名下的feign接口,而callback实例是属于@Component,没有被@FeignClient修饰,所以依旧找不到。


    那么正确的解决方法就是:在启动类加上

    @ComponentScan(basePackages = {"org.springblade","{业务模块包名}"})


    8 讨论(0)
  • 2020-11-12 11:13

    我在启动类上面加了注解就好了

    @ComponentScan("org.springblade")

    5 讨论(1)
  • 2020-03-19 10:06

    使用idea的Build > Rebuild Project, 而不是平时用的Build Project(Ctrl + F9), 可以解决问题. 原因是, Build只会编译被修改了的文件, 但这次, 涉及注解里的内容, 需要强行把所有的classes重新生成. 只有Rebuild Project才有这个效果.

    3 讨论(1)
  • 2019-06-05 15:16

    有没有把这个fallback类定义成一个bean,否则会报错

    作者追问:2019-06-12 16:49

    fallback类使用@Component进行修饰了的


    1 讨论(2)
提交回复