ImportBeanDefinitionRegistrar
接口,来解析注解并进行加载FactoryBean
,对Feign进行包装,之后我们使用的xxxFeign都是包装过的HardCodedTarget
,如下图String tom = portFeign.feignTest("Tom");
进入到ReflectiveFeign
类的代理方法SynchronousMethodHandler
RequestTemplate
的Request.create(this.method, this.url(), this.headers(), this.requestBody());
LoadBalancerFeignClient
负载均衡客户端,它来负责解析服务和发送请求FeignClientFactoryBean
类,它集成了FactoryBean
,所以他实现了getObject
方法
FeignClientFactoryBean
初始化过程@EnableFeignClients
,内容如下@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {
FeignClientsRegistrar
类的实例化,而FeignClientsRegistrar
实现了接口ImportBeanDefinitionRegistrar
,因此,一旦spring一旦实例化它,后续会调用registerBeanDefinitions
方法
https://www.processon.com/view/link/5cb5790ae4b0841b843185a6 Github地址:https://github.com/tzxylao/learn-demo