跳到主要内容

【17】MethodHandler方法处理器源码分析

文章目录

  • 前言
  • MethodHandler接口
  • 流程分析
      1. 初始化
    1. 方法执行

前言

在之前的案例中,我们分析了注解扫描,加载Feign 接口信息为FactoryBean,然后通过动态代理加载到IOC中,
在动态代理的newInstance过程中,会使用契约Contract创建方法元数据(MethodMetadata),然后通过这些元数据为每个执行方法加载MethodHandler,接下来就具体分析下MethodHandler
 

MethodHandler接口

MethodHandler接口非常简单,只有一个invoke方法,和JDK中的InvocationHandler#invoke类似,应该知道JDK中的动态代理,实现InvocationHandler后,代理对象执行时,实际执行的是其invoke方法,这里MethodHandler设计就是源于此,方法执行时,实际会调用MethodHandler的invoke方法。

 /**
* Like {@link InvocationHandler#invoke(Object, java.lang.reflect.Method, Object[])}, except for a single method.
*/
interface MethodHandler {



Object invoke(Object[] argv) throws Throwable;
}

MethodHandler有两个实现类,分别为DefaultMethodHandler、SynchronousMethodHandler。