一、该问题的重现步骤是什么?
bladex-doc 4.4 的3.5:第一个远程调用,其中3.5.1 声明式服务调用,第6部分:
@RestController
@AllArgsConstructor
public class BlogClientImpl implements BlogClient
此处有个解耦疑问:
微服务之间是通过 HTTP 协议进行通信的,而不是通过 Java 接口。这个类提供了接口的真正业务逻辑,但它不需要、也不应该实现 BlogClient接口,只需要这个方法的签名(路径、参数)必须与 Feign 接口中的定义匹配即可。
BlogClient是调用方(客户端)的约定,而 BlogClientImpl 是提供方(服务端)的实现。让服务端去实现一个客户端的接口会造成不必要的强耦合。
二、你期待的结果是什么?实际看到的又是什么?
把 implements BlogClient 去掉,只由熔断机制的 BlogClientFallback 实现BlogClient接口。
@RestController
@AllArgsConstructor
public class BlogClientImpl
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex 4.4
四、请提供详细的错误堆栈信息,这很重要。
示例中BlogClientFallback 和 BlogClientImpl 都实现了BlogClient, 当调用方使用 @Autowire时,会无法找到实现类,只能改用@Resource。
五、若有更多详细信息,请在下面提供。
扫一扫访问 Blade技术社区 移动端