Spring-cloud学习笔记---Ribbon源码剖析之RestTemplate对象绑定拦截器过程

Spring-cloud学习笔记—Ribbon源码剖析之RestTemplate对象绑定拦截器过程

1. 查看Ribbon源码来源分析

  1. 我们在RestTemplate实例上添加了⼀个@LoadBalanced注解,就可以实现负载均衡,很神奇,我们接下来分析这个注解背后的操作(负载均衡过程)
  2. 查看@LoadBalanced注解,那这个注解是在哪⾥被识别到的呢?
    在这里插入图片描述
  3. SpringCloud充分利⽤了SpringBoot的⾃动装配特点,找spring.factories配置⽂件,在netflix-ribbon的jar包中
    在这里插入图片描述
  4. 查看类头
    @Configuration
    @Conditional(RibbonAutoConfiguration.RibbonClassesConditions.class)
    @RibbonClients
    
    //表示在装配完 org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration之后
    //才能装配 RibbonAutoConfiguration
    @AutoConfigureAfter(name = "org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration")
    
    //表示 RibbonAutoConfiguration 要在括号里的东西进行装配前 来装配
    @AutoConfigureBefore({LoadBalancerAutoConfiguration.class, AsyncLoadBalancerAutoConfiguration.class})
    @EnableConfigurationProperties({RibbonEagerLoadProperties.class, ServerIntrospectorProperties.class})
    public class RibbonAutoConfiguration {
    		... ...
    
  5. 类头研究顺序在这里插入图片描述
  6. 研究LoadBalancerAutoConfiguration
    @Configuration
    
    //只有当RestTemplate.class存在的时候,该配置类的配置才会生效
    @ConditionalOnClass(RestTemplate.class)
    @ConditionalOnBean(LoadBalancerClient.class)
    @EnableConfigurationProperties(LoadBalancerRetryProperties.class)
    public class LoadBalancerAutoConfiguration {
    ... ...
    
    在这里插入图片描述

2.查看 LoadBalancerAutoConfiguration 里面的内容

  1. 注⼊RestTemplate对象到集合待⽤
    在这里插入图片描述
  2. 注⼊RestTemplate定制器:给传入的RestTemplate对象添加拦截器
    在这里插入图片描述
  3. 使⽤定制器给集合中的每⼀个RestTemplate对象添加⼀个拦截器
    在这里插入图片描述
到这⾥,我们明⽩,添加了注解的RestTemplate对象会被添加⼀个拦截器LoadBalancerInterceptor,该拦截器就是后续拦截请求进⾏负载处理的。
所以,下⼀步重点我们该分析拦截器LoadBalancerInterceptor------>>>intercept()⽅法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值