OpenFeign 继承支持

OpenFeign 支持接口继承,这允许你通过创建一个基础接口来定义公共的 Feign 客户端方法,然后其他接口可以继承这个基础接口。这种方式有助于代码复用,特别是当多个 Feign 客户端需要共享一些通用的方法签名和配置时。

例如,假设你有一个微服务架构,其中多个服务都需要调用用户服务来获取用户信息。你可以创建一个基础的 UserServiceClient 接口,在这个接口中定义获取用户基本信息(如 getUserById 方法)和获取用户权限信息(如 getUserPermissionsById 方法)等通用的方法。然后,其他具体的业务接口(如 OrderServiceClient 需要用户信息来处理订单相关事务,ContentServiceClient需要用户信息来提供个性化内容等)可以继承这个 UserServiceClient 接口。

示例

定义基础接口

UserService.java 是基础接口,仅有 getUser 方法定义:

public interface UserService {

    @RequestMapping(method = RequestMethod.GET, value ="/users/{id}")
    User getUser(@PathVariable("id") long id);
    
}

服务具体实现

UserResource.java 是具体的服务实现类,通过实现该接口提供真实的服务,如下:

@RestController
public class UserResource implements UserService {

    @RequestMapping(method = RequestMethod.GET, value ="/users/{id}")
    public User getUser(@PathVariable("id") long id) {
        //...忽略...
    }
    
}

定义 Feign 客户端

创建 UserClient.java 接口,继承上面的 UserService 接口,避免重复编写方法定义信息,如下:

package project.user;

@FeignClient("users")
public interface UserClient extends UserService {
    // 这里不需要重复定义 getUser 方法
}

注意:@FeignClient 接口不应该在服务器和客户端之间共享,并且不再支持在类级别上用 @RequestMapping 注解 @FeignClient 接口。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号