fallback熔断器实现了Feign客户端的所有方法,当网络不通或者访问失败时,会自动调用fallback服务降级类中的方法。
启动项目时报错了,具体的报错信息如下:
1 | Caused by: java.lang.IllegalStateException: No fallback instance of type class com.xxx.xxx.feign.fallback.RemoteUserFallback found for feign client xxx |
报错内容明显是没找到RemoteUserFallBack这个类
1、检查配置文件
1 | feign: |
2、启动类上需要@EnableFeignClients注解
1 | //开启Feign并扫描Feign客户端 |
3、Feign客户端类上使用@FeignClient,通过fallback属性来指明对应熔断器的类名
1 | //声明当前类是一个Feign客户端,并指定请求的服务名 |
4、fallback熔断器类上需要加注解@Component,确保可以被spring扫描
我报错的原因就是出现在第四步这里,尽管我加了@component注解。SpringBoot在启动的时候 会扫描main类所在包及其子包进行Bean的实例化,但是fallback熔断器类并不在我启动类的子类下面,我这里是通过引入其模块来调用这里面的方法。
所以最后我在启动类上加了@ComponentScan注解:
1 |
OK,成功启动并访问成功。