首页
学习
活动
专区
工具
TVP
发布

Spring Cloud Feign源码分析

代码实现

我们从@EnableFeignClients这个配置进入,通过这个配置我们就开启了Feign客户端。

从上面@Import导入的方式实现把实例FeignClientsRegistrar加入spring的IOC容器中,扫描声明@FeignClient接口,FeignClientsRegistrar实现了ImportBeanDefinitionRegistrar并且重写了registerBeanDefinitions方法。

ImportBeanDefinitionRegistrar是Spring的一个扩展点,会扫描每一个包含@FeignClient接口的类

我们会通过BeanDefinitionHolder封装我们扫描的接口,然后把设置各种元数据信息。最终通过registerBeanDefinition把这些注册到Spring的工厂当中。

从上面我们知道FeignClientFactoryBean是一个工厂Bean,可以生成某一个类型Bean实例,FeignClientFactoryBean实现了FactoryBean并重写了getObject

调用Targeter的target方法会使用动态代理生成@FeignClient接口的代理对象

总结

从我们增加@EnableFeignClients注解开始,当我们启动应用的时候,系统就会扫描所有的包里面带有@FeignClient接口的类,并为此生成代理对象,这个代理对象会设置我们写的各种配置与拦截器,并最终注入到Spring的IOC容器中,当我们调用@FeignClient接口的类的方法时,其实是调用的生成的代理的方法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200706A0V2BI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券