openfeign
2024-03-27 14:52:12 6 举报
OpenFeign是一种Java的开源库,主要用于简化与Web服务的交互。它通过使用Java接口以及可配置的注解,来创建对Web服务的请求。OpenFeign还支持对请求进行装饰、重试和负载均衡。此外,OpenFeign与Spring Boot集成,提供了强大的自动配置功能,大大简化了Web服务的调用过程。使用OpenFeign,开发者可以像调用本地方法一样,调用远程的Web服务,极大的提高了开发效率和代码的可读性。
作者其他创作
大纲/内容
找到所有@Component,javax.annotation.ManagedBean,javax.inject.Named,并有FeignClient的类。简单来说就是spring能扫到的@FeignClient
ClassPathScanningCandidateComponentProvider#findCandidateComponents
处理@EnableFeignClients中defaultConfiguration参数
FeignClientFactoryBean#feign构建一个 Feign.Builder
NamedContextFactory#getInstances获取到所有的LoadBalancerLifecycle
LoadBalancerClient#reconstructURI创建具有 ip:port 的url
ServiceInstanceChooser#chooseLB 选择请求的实例
LoadBalancerLifecycle#onComplete回调
是否懒加载
FeignClientsRegistrar#registerFeignClient把所有@FeignClient配置好并注册到spring容器中
OptionsFactoryBeanRefreshableUrlFactoryBean注入 refresh 的对象,可在配置更新后进行刷新
FeignClientFactoryBean#getObject
否
false
FeignClientsRegistrar#registerFeignClients
是
feign.Client#execute
FeignClientsRegistrar#registerBeanDefinitions在所有BeanDefinition加载后,ConfigurationClassPostProcessor处理配置类时调用,注入BeanDefinition
registerClientConfiguration注册配置类@FeignClient#configuration
FactoryBean#getObjectSpring 容器里面 getBean
FeignClientsRegistrar#lazilyRegisterFeignClientBeanDefinition
FeignClientsRegistrar#registerDefaultConfiguration
@EnableFeignClients中clients是否有值
FeignBlockingLoadBalancerClientRetryableFeignBlockingLoadBalancerClient找到LB的客户端
FeignClientsRegistrar#eagerlyRegisterFeignClientBeanDefinition
从Spring 容器中获取FeignLoggerFactoryFeign.BuilderEncoderDecoderContract
true
FeignClientFactoryBean所有的 FeignClient 都是这个对象
LoadBalancerLifecycle# onStartRequest回调
spring.cloud.openfeign.lazy-attributes-resolution默认为 false
FeignClientFactoryBean#getTarget
EnableFeignClients
FeignClientFactoryBean#loadBalance
LoadBalancerLifecycle#onStart回调
是否有 url
getBasePackages获取注解上面的配置的包,没有找到则默认为当前包
0 条评论
下一页