Spring Cloud OpenFeign源码分析
2021-08-09 14:39:23   2  举报             
     
         
 Spring Cloud OpenFeign源码分析
    作者其他创作
 大纲/内容
 RequestTemplate
  MethodMetadata
  SynchronousMethodHandler.invoke(args)
  ReflectiveFeign.newInstance
    动态代理机制(FeignClientInvocationHandler)
  Feign.target
  FeignClientsRegistrar
  decoder
  getObject()
  父子关系
  MethodHandler
  获取目标对象实例
  注解中增加了Import
  Request
  动态代理拦截
  根据解析出来的元数据,构建RequestTemplate
  MethodHander(methodToHandler)
  FeignClientFactoryBean.loadBalance
  根据接口类的注解声明,解析出底层的MethodHandler
  @FeignClient
  构建代理对象实例
     @Autowired    XXXFeignClient xxxFeignClient;
  feignclient模版进行解析
  BaseContract
  Encoder将Bean包装成请求
  Response
  HTTP通信
  Interceptors(LoadBalancerFeignClient)..
  Logger
  Contract
  Bean的注入
  encoder
  ReflectiveFeign.create()
  SpringMvcContract.parseAndValidateMetadata
  xxxFeignClient.method();
  返回调用结果
  动态将Bean装载到IOC容器
  MethodHander(defaultMethodHandlers)
  MethodHander(nameToHandler)
  Http请求逻辑
  FeignClientFactoryBean
  FactoryBean有一个特征,就是如果需要获得这个bean的真正实例,会通过getObject()方法来实现
  ReflectiveFeign.apply
  ImportBeanDefinitionRegistrar
  FeignClient接口注释内容解析
  registerFeignClient()
  Request.order
  Respose
  生成动态代理实现类#ReflectiveFeign.FeignInvocationHandler
  HystrixTarget.target
  根据方法名称找到对应的MethodHandler进行调用
  Contract(SpringMvcContract
  dispatch.get(method)).invoke(args)
  FeignInvocationHandler.invoke
  FeignClientFactoryBean.getObject()
  Retry
  FeignClientFactoryBean.getTarget
  FeignClient被动态注册成了一个FactoryBean
   
 
 
 
 
  0 条评论
 下一页
  
   
   
  ![[课堂配置版本]咕泡-Java应届生课程](https://www.processon.com/chart_image/template/thumb/64ab68c27621310f823cfe03.png?tid=64a7d1caf9b40558f7937e7b) 
   
  
  
  
  
  
  
  
  
 