• Ribbon源码解析


    我们只需要在RestTemplate的bean上面加入@LoadBalanced注解即可在使用RestTemplate发送HTTP请求时,自动实现负载均衡调用。

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    看起来挺神奇中,本节我们就讲一讲这背后发生了什么。

    我们最能想到的就是@LoadBalanced这个注解起了作用, @LoadBalanced源码如下:

    @Target({ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @Qualifier
    public @interface LoadBalanced {
    }

    仔细看来没有什么特别之处,也没有像往常的注解引入其他类。按照常规惯例,我们就到引入的jar包下看下META-INF/spring.factories文件有没有引入什么特别的类。我们就到@LoadBalanced所在的jar包spring-cloud-commons-1.2.2.RELEASE-sources.jar来看下其spring.factories文件:

    # AutoConfiguration
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    org.springframework.cloud.client.CommonsClientAutoConfiguration,
    org.springframework.cloud.client.discovery.noop.NoopDiscoveryClientAutoConfiguration,
    org.springframework.cloud.client.hypermedia.CloudHypermediaAutoConfiguration,
    org.springframework.cloud.client.loadbalancer.AsyncLoadBalancerAutoConfiguration,
    org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration,
    org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration,
    org.springframework.cloud.commons.util.UtilAutoConfiguration,
    org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration
     
     
    # Environment Post Processors
    org.springframework.boot.env.EnvironmentPostProcessor=
    org.springframework.cloud.client.HostInfoEnvironmentPostProcessor

    AutoConfiguration引入的类都会在项目启动时被添加到Spring容器中,与LoadBalanced相关的的有两个,直觉上LoadBalancerAutoConfiguration更像我们需要看的类。

  • 相关阅读:
    C#.NET 超大文件上传和断点续传的实现
    Linux下arp用法
    daf简记
    Linux route命令详解和使用示例(查看和操作IP路由表)
    CMake使用之一
    Crontab的格式
    linux 单网卡绑定两个ip
    云计算与虚拟化以及IaaS, PaaS和SaaS
    shell中判断用法
    解决screen Cannot open your terminal '/dev/pts/1'问题
  • 原文地址:https://www.cnblogs.com/myitnews/p/12498479.html
Copyright © 2020-2023  润新知