首页 > 数据库 > 数据库开发技术 > rpc框架Feign十大可扩展组件你知道哪些?

前言
一个朋友最近去面试,问了一个这样的题目,OpenFeign十大可扩展组件有哪些,虽然看过OpenFeign的源码,但是要我说出10个组件,我还是很难说全,记忆最深的只有 1、日志,2、解码器,3、重试组件,其他的想不起来了。
今天我回顾了下源码,之前看的没有好好记录下来,还是要拿个小本本记下来呀。现在我就把复习OpenFeign原理的过程记录下来。
先找到我之前写的feign调用demo项目
1、这是之前学习openfeign源码写的demo,客户端接口使用FeignClient注解标记,记得添加jar依赖spring-cloud-starter-netflix-eureka-client
public interface FeignClientApi{String hello();}
2、启动类使用EnableFeignClients注解标记开启feign功能
public class EurekaClientApp {
3、写一个http接口调用发起远程rpc调用,debug模式启动开始debug
public class FeignTestController {private FeignClientApi feignClientApi;public String get() {return feignClientApi.hello();}}
4、使用postman访问
http://localhost:8080/test/feign,
查看feignClientApi对象

FeignInvocationHandler就是生成Jdk动态代理必须实现的接口InvocationHandler子类
FeignInvocationHandler类就负责处理代理请求的逻辑,它把请求转发给dispatch处理。dispatch默认使用SynchronousMethodHandler来处理,从SynchronousMethodHandler的属性组成就可以看到Feign的十大组件。根据对象结构我整理出一个图,里面就有我们常用的重试器组件,解码组件,日志组件。

这十个组件是真的优秀啊,他们都是可以被我们扩展的,即我们可以选择他的默认实现,也能自己实现他的接口替换默认实现,Spring团队实力真的强。
原文作者:服务端技术栈;如有侵权,请联系管理员删除。