Spring-cloud学习笔记---Ribbon源码剖析之拦截器Interceptor方法
Spring-cloud学习笔记—Ribbon源码剖析之拦截器Interceptor方法
1. 分析拦截器主要分析LoadBalancerInterceptor的intercept()
⽅法
2. 那么RibbonLoadBalancerClient
对象是在哪里注入的?
- 回到最初的⾃动配置类
RibbonAutoConfiguration
中,如下图红色框 - 所以说负载均衡的事情执⾏,原来交给了我们最初看到的
RibbonLoadBalancerClient
对象
3. 接下来回到LoadBalancerInterceptor
类中查看intercept
方法
- 查看方法最后一行
loadBalancer.execute
方法,如下图红色框部分 - 点击上图红色框
execute
方法后,进入LoadBalancerClient
接口查看execute
方法,点击execute
方法直接进入RibbonLoadBalancerClient
实现类,查看execute
方法,RibbonLoadBalancerClient
的execute()
方法是⾮常核⼼
的⼀个⽅法,总结如下:
- 查看关注1,点击
getLoadBalancer
方法
- 开始怀疑
ILoadBalancer
实例是什么时候注入的 ,这时回到主配置类RibbonAutoConfiguration
- 点击
SpringClientFactory
类进行查看,发现里面装配了很多东西,他在里面也搞了一个ILoadBalancer
,也是获取实例,从里面去拿
- 主要记住
SpringClientFactory
类的构造器,他里面调用了一个父类,父类调用了一个参数RibbonClientConfiguration
- 查看
RibbonClientConfiguration
,在这个类中装配了⼤脑(LoadBalancer:负载均衡调度管理)
和肢⼲(另外四个)