FeignClient定义在被调用方

@FeignClient(name = "product-service")
public interface ProductClient {
    @GetMapping("/products/{id}")
    public Product loadById(@PathVariable("id") Long id);
}
与@FeignClient(name="user-service")
public interface UserClient {
    @GetMapping("/users/{id}")
    public User load(@PathVariable("id") Long id);
}

在这两个示例中,@FeignClient 注解定义在被调用方的接口上,而不是调用方的接口上,这是因为这些接口是服务提供方暴露给外部调用方的服务接口。

@FeignClient 注解表明这些接口是 Feign 客户端接口,用于调用名为 "product-service" 或 "user-service" 的远程服务。通过 @GetMapping 注解和路径参数的方式,定义了具体的服务调用接口。

由于 Feign 是一个声明式的 REST 客户端,它可以根据这些注解信息自动生成 HTTP 请求,将请求发送到远程服务端,并将响应结果映射为 Java 对象返回给调用方。

在这种情况下,如果将 Feign 客户端定义在调用方的接口上,就需要在调用方手动编写 Feign 客户端的实现类。而将 Feign 客户端定义在被调用方的接口上,则可以使得调用方更加简洁,只需要定义接口和相关注解,无需关心实际的服务提供方和实现细节。

需要注意的是,在实际开发中,有些场景可能需要将 Feign 客户端定义在调用方的接口上,例如当多个调用方需要调用相同的服务接口时,可以将 Feign 客户端集中在一个公共的模块中,以便调用方进行统一的管理和配置。

你可能感兴趣的:(java,前端,服务器)