Spring Cloud Feign源码分析

代码实现

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

Spring Cloud Feign源码分析

 

Spring Cloud Feign源码分析

 

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

Spring Cloud Feign源码分析

 

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

Spring Cloud Feign源码分析

 

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

Spring Cloud Feign源码分析

 

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

Spring Cloud Feign源码分析

 

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

Spring Cloud Feign源码分析

 

Spring Cloud Feign源码分析

总结

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

落魄程序员在线求关注! 欢迎关注我的公众号!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值