Feign源码分析

427 阅读1分钟

配置

maven配置

image.png

接口配置

image.png

feign配置

image.png image.png

image.png

image.png

原理

image.png

入口

image.png

image.png 对应的类

image.png 其中 FeignClientFactoryBean 实现了FactoryBean,InitializingBean,ApplicationContextAware

image.png 重写了getObject 方法

image.png

image.png

image.png

image.png

image.png image.png

image.png

image.png 通过debug得知

image.png 核心方法,动态代理调用的方法

image.png feign 只是提供调用的方式,调用哪个节点还是得整合ribbon image.png 这里有个有趣的地方

image.png 如果不配置OKHttp之类非JDK原生的,底层还是会调用feign.Client.Default#execute

image.png

image.png

核心亮点

image.png 为什么只是贴了@FeignClient注解,我们就可以像bean一样去使用这个接口呢?

image.png

image.png

image.png

image.png

image.png

image.png

image.png 当spring在执行getObject方法时就会去创建动态代理

image.png

后记

mybatis也是通过接口使用动态代理来实现相关功能的,这里可以借鉴学习,以后自己写相关的代码时可以借鉴.