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")})

  再次调用接口就能调用通了。

posted @ 2024-09-02 14:21  sensen~||^_^|||&  阅读(65)  评论(0)    收藏  举报