Feign原理图
2021-12-12 16:00:24 0 举报
Feign原理图
作者其他创作
大纲/内容
方法Method
FeignClientsRegistrar注册器初始化动态代理
配置文件指定的默认配置feign.client.default.xxxxxx
重试
方法名+参数唯一标志
ParseHandlersByName接口解析组件
否
初始化服务A独立的Spring上下文
初始化Bean
超过重试次数
Client.Default底层使用HttpURLConnection
@FeignClient
200 = status 300404
扫描注解@FeignClient
请求是否成功
使用SpringMvcContract解析接口上每个方法的SpringMVC注解
交由Client执行
FeignClientsConfiguration固定配置类
选择下一个Server
初始化并加载配置
请求成功
服务独立的Targeter用来创建FeignClient
DefaultFeignLoadBalancedConfiguration
方法的代理处理器SynchronousMethodHandler
LoadBalancerCommand
注入
参数
修饰的Interface接口
ZoneAwareLoadBalancer默认负载均衡器
抛出RetryableException
创建LoadBalancerCommand
是
服务独立的Spring上下文
CachingSpringLoadBalancerFactory缓存
sleep休眠
@RequestParam等解析参数
ClassPathScanningCandidateComponentProvider组件扫描器
从服务独立的Spring上下文获取组件Bean进行配置
响应码
得到FeignLoadBalancer
返回对象
提供属性
加载
@RequestMapping解析url地址
注册
通过ZoneAwareLoadBalancer负载均衡
获取FeignLoadBalancer
重试次数小于MaxAutoRetries
FeignContext上下文
重试次数不小于MaxAutoRetries
feign
FeignClientSpecificationdefault配置
Controller
有无缓存
spring cloud feign
解码成功
无
是否IO异常
请求
有
选择一个Server
找到方法对应的处理器执行请求
配置文件指定的独立配置feign.client.contextId.xxxxxx
从模板拷贝一个RequestTemplate
ribbon
重试次数不小于MaxAutoRetriesNextServer
解析接口上的注解
执行某个方法
其他
execute
parent
项目启动
FeignClientFactoryBean创建Feign.Builder
FeignInvocationHandler动态代理
自定义配置类
@EnableFeignClient指定扫描包路径
请求失败
ErrorDecoder解码器
加载配置
executeWithLoadBalancer
FeignClient接口
重试次数小于MaxAutoRetriesNextServer
Decoder解码器
找到
LoadBalancerFeignClient胶水代码
FeignClientFactoryBean构造工厂
父上下文ApplicationContext
moe.ahao.xxxxx
@EnableFeignClients
服务A的Spring上下文ApplicationContext
spring
FeignClientSpecification独立配置
建议不开启外层重试机制
0 条评论
下一页