(1).ReflectiveFeign

public class ReflectiveFeign extends Feign {
    public <T> T newInstance(Target<T> target) {
        // ************************************************
        // 调用ParseHandlersByName.apply()的方法对target的方法进行解析
        // key : beanName#methodName(paramType,paramType...)
        // value: MethodHandler
        // ************************************************
        Map<String, MethodHandler> nameToHandler = targetToHandlersByName.apply(target);
        // key:Method  value:MethodHandler
        Map<Method, MethodHandler> methodToHandler = new LinkedHashMap<Method, MethodHandler>();
        // 默认的方法处理(equals/hashcode...)
       List<DefaultMethodHandler> defaultMethodHandlers = new LinkedList<DefaultMethodHandler>();
        
        // 遍历target上的所有方法
        for (Method method : target.type().getMethods()) {
          if (method.getDeclaringClass() == Object.class) {
            continue;
          } else if (Util.isDefault(method)) {
            DefaultMethodHandler handler = new DefaultMethodHandler(method);
            defaultMethodHandlers.add(handler);
            methodToHandler.put(method, handler);
          } else {
            methodToHandler.put(method, nameToHandler.get(Feign.configKey(target.type(), method)));
          }
        }// end for
        
        // ***************************************************************
        // 根据InvocationHandler里面包含着一个Map
        // InvocationHandlerFactory.create(...)
        // map key:Method
        // map value:MethodHandler
        // ***************************************************************
        InvocationHandler handler = factory.create(target, methodToHandler);
        T proxy = (T) Proxy.newProxyInstance(target.type().getClassLoader(),new Class<?>[] {target.type()}, handler);
        
        // 对默认方法进行处理
        for (DefaultMethodHandler defaultMethodHandler : defaultMethodHandlers) {
          defaultMethodHandler.bindTo(proxy);
        }// end for
        
        // 返回:代理对象
        return proxy;
  } //end newInstance
 
}// end ReflectiveFeign

(2).总结

ReflectiveFeign的newInstance方法,会委托给ParseHandlersByName的apply方法对target对象进行解析.最后返回Map结构(Map<String,MethodHandler>).
再根据target创建Proxy对象(Proxy对象必须是一个InvocationHandler),而InvocationHandler内部维持着:Map<Method,MethodHandler>.可根据请求的Method,调用MethodHandler的invoker方法.