环境:Spring Cloud 2021.0.7 + Spring Boot 2.7.12,开启注解功能,容器在启动过程中会找到所有@FeignClient的接口类,然后将这些类注册为容器Bean,而每一个Feign客户端对应的是FactoryBean对象FeignClientFactoryBean。,具体如何找这些带有@FeignClient注解的接口类可以查看FeignClientsRegistrar该类就在@EnableFeignClients中被导入。,Client的具体实现可以有如下:,具体使用哪个是根据你环境引入了哪个依赖(httpclient,okhttp),具体选择通过如下配置,如果你的环境有多个实现,那么这里会根据这里的导入顺序加载。这里以最后一个DefaultFeignLoadBalancerConfiguration为例。,在没有导入httpclient或者okhttp情况下,使用的Client实现是FeignBlockingLoadBalancerClient。,构造FeignBlockingLoadBalancerClient传入了负载均衡客户端LoadBalancerClient及负载均衡客户端工厂LoadBalancerClientFactory该工厂是用来创建每一个Feign客户端对应的子容器AnnotationConfigApplicationContext及从对应子容器获取相应的Bean实例对象,如:Client,Request.Options,Logger.Level等。,LoadBalancerClient具体实现:,接着上面FeignBlockingLoadBalancerClient#execute方法最终的返回方法执行,
© 版权声明
文章版权归作者所有,未经允许请勿转载。