【19】Feign接口继承特性
文章目录
- 前言
-
- 问题
- Feign接口继承特性
- 改造案例
-
-
- 定义统一接口
-
-
- 提供方实现接口
-
- 消费者继承接口
前言
问题
在编写Feign 接口时,我们需要写注解来声明请求的路径、参数。而在被调用方,这些是已经声明好了的,重复在写一次,很容易出错,而且也有冗余。

Feign接口继承特性
在之前分析加载方法元数据的文档中,有提到在获取方法元数据是也会获取父接口中方法,也就是说父类接口的方法也会被加载为元数据,用于构建请求模板。

那么通过这种方式,我们可以定义好一个接口,让服务提供方实现这个接口,编写业务逻辑,让调用方编写Feign 接口的时候,直接继承这个就可以了,这样就能轻松实现Feign 远程调用。
改造案例
1. 定义统一接口
首先使用之前的案例,在order-api包中,添加POJO 类、Feign API接口,别人想通过Feign 调用这个服务时,直接引入这个包就可以了。

编写一个Feign 接口,声明Spring MVC访问方式,注意这个接口必须是顶层接口。
@RequestMapping("/order")
public interface OrderFeignApi {
@GetMapping("insert")
public List<Order> insertOrder(@RequestParam("accountId") Long accountId, @RequestParam("commodityCode") String commodityCode, @RequestParam("count") Long count, @RequestParam("money") Long money);
@PostMapping("/post")
public Order post(Order order);
@GetMapping("id/{id}")
public List<Order> id(@PathVariable("id") String id);
}