之前的文章《一次线上超时问题,看Ribbon 超时机制》已经提到了openFeign 调用,今天就来扒一扒,具体是如何调用的,要弄清楚这个问题,首先得知道 client 对象如何创建,然后才是调用,不着急,我们慢慢来,首先看创建。
一、FeignClient 创建
注入了 feignClient 的 bean 在创建的时候,会 resolveDependency 然后 创建 feignClient, 通过 debug:
org.springframework.cloud.openfeign.FeignClientFactoryBean#getObject :
继续跟踪下去,最后发现使用了 JDK 动态代理:
二、调用
既然知道是 JDK 动态代理,那也就知道调用方式了,通过 methodHandler 调用,只是这里 feign z做了封装
再往下就是通过 client 去发送 http 请求完成调用了:
如果觉得还不错的话,关注、分享、在看, 原创不易,且看且珍惜~