我是靠谱客的博主 魔幻鞋子,最近开发中收集的这篇文章主要介绍spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记

概述

  • 利用EnableFeignClients注解引入FeignClientsRegistrar,FeignClientsRegistrar解析EnableFeignClients与FeignClient注解信息,
    利用FeignClientFactoryBean创建FeignClient标记接口的代理类(以serviceId+FeignClient为alias)
  • FeignAutoConfiguration提供feign级别相应的bean支持,FeignRibbonClientAutoConfiguration提供ribbon-feign级别的bean支持
  • 参考
    • http://blog.csdn.net/undergrowth/article/details/77625767
    • http://blog.csdn.net/undergrowth/article/details/77800470
    • http://blog.csdn.net/undergrowth/article/details/77859293

EnableFeignClients—->引入FeignClientsRegistrar,启用feign相关功能

FeignClientsRegistrar—->解析EnableFeignClients与FeignClient注解信息,注入相关的bean到beanfactory

  • registerDefaultConfiguration—->注册EnableFeignClients上的defaultConfiguration配置
  • registerFeignClients—->解析FeignClient注解
    • registerFeignClient—->利用FeignClientFactoryBean创建feignclient标记的接口的代理实现类

FeignClient—->用于标记接口,表示接口的rest代理类需要创建

  • name/value/url/decode404/configuration/fallback/fallbackFactory
  • type为接口的class信息(在创建接口的代理类时需要使用)

FeignAutoConfiguration

  • 注入FeignContext,用于存放相应的bean信息
  • Targeter—->用于是否使用hystrix作为熔断
    • 当feign.hystrix.HystrixFeign类存在时,注入HystrixTargeter,否则为DefaultTargeter
  • 当无ribbon支持时,即com.netflix.loadbalancer.ILoadBalancer不存在类路径,创建无负载均衡的Client(要么是ApacheHttpClient或者OkHttpClient)

FeignRibbonClientAutoConfiguration—->当ILoadBalancer存在时,加入ribbon支持feign

  • 当beanfactory无Client时,创建LoadBalancerFeignClient,至于是ApacheHttpClient或者OkHttpClient,取决于类路径下类是否存在
  • 注入CachingSpringLoadBalancerFactory,支持负载均衡的缓存

FeignClientsConfiguration—->注入feign级别相关的编解码器、日志工厂、feign生成器

  • Decoder/Encoder/Contract/Feign.Builder/Retryer/FeignLoggerFactory

FeignClientFactoryBean—->根据feignclient解析的信息,以及FeignContext中拥有的bean信息,创建feign代理实现类

  • name/type/fallback/fallbackFactory
  • getObject—->获取代理实现类对象
    • feign—->根据上面配置器配置的bean,从feigncontext中创建Feign.Builder
    • 如果feignclient注解没有配置url参数,则使用loadBalance,创建LoadBalancerFeignClient进行ribbon支持的feign
      • 如果有设置,则使用LoadBalancerFeignClient中实际的要么是ApacheHttpClient或者OkHttpClient进行feign的操作
    • 后续HystrixTargeter.target,如果设置fallback,则targetWithFallback使用HystrixFeign.target创建HystrixInvocationHandler处理器中转处理,
    • 创建feign的hystrixCommand命令完成hystrix支持的feign

测试

  • 示例代码位于– https://github.com/undergrowthlinear/2016MyBookSummary.git

最后

以上就是魔幻鞋子为你收集整理的spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记的全部内容,希望文章能够帮你解决spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记spring-cloud-feign之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部