SpringCloud使用记录
1. 使用Feign Client时,启动项目报错,找不到FallbackFactory,eg:
No fallbackFactory instance of type class com.jichu.chezhan.api.factory.RemoteDeviceCategoryFallbackFactory found for feign client remoteDeviceCategoryService
分析:
这个错误信息表明在尝试创建 Feign 客户端时,找不到类型为 com.jichu.chezhan.api.factory.RemoteDeviceCategoryFallbackFactory 的回退工厂实例。Feign 客户端通常用于 简化 HTTP 客户端的开发,在微服务架构中非常常见。当调用远程服务失败时,可以通过配置一个回退机制来处理这些失败情况。
解决:
① 确保已正确配置回退工厂:
确认你的应用中确实存在 RemoteDeviceCategoryFallbackFactory 类,并且该类实现了正确的接口或抽象类。此外,确认该类已经被 Spring 容器正确识别和管理。
② 检查 @FeignClient 注解:
在定义 Feign 客户端的接口上,确保使用了正确的 @FeignClient 注解,并且指定了 fallbackFactory 属性指向你定义的回退工厂类。
③ 检查依赖项: 确保所有必要的依赖项都已添加到项目中,并且版本兼容。特别是与 Spring Cloud、OpenFeign 和 Sentinel 相关的依赖。
④ 检查 Spring Boot 应用启动类: 确认你的主类上使用了 @SpringBootApplication 注解,并且没有遗漏任何需要的注解,如 @EnableFeignClients。
以上方法都尝试过后发现还是报错,可以尝试:
在启动类上添加ComponentScans注解,启动项目时去扫描com.api路径下的组件,就可以找到了:
@ComponentScans(value = {@ComponentScan("com.api")})
问题:
添加@ComponentScans后可以正常启动后,但是调用接口是发现找不到了,因为上面CompnnentScans里面只设置了调用远程接口模块的扫描包路径,还需要把自己项目里的需要扫描的包路径加上,eg:
@ComponentScans(value = {@ComponentScan("com.jichu.chezhan.api"), @ComponentScan("com.ks")})
再次调用接口就能调用通了。

浙公网安备 33010602011771号