Spring Cloud之@LoadBalanced注解

本文探讨了Spring Cloud的@LoadBalanced注解如何启用RestTemplate的客户端负载均衡功能。通过源码分析,揭示了该注解如何与LoadBalancerClient配合工作,并介绍了Spring Cloud利用Ribbon进行实际的负载均衡操作。
摘要由CSDN通过智能技术生成

Spring Cloud的commons模块提供了一个@LoadBalanced注解,方便我们对RestTemplate添加一个LoadBalancerClient,以实现客户端负载均衡。通过源码可以发现这是一个标记注解:

/**
 * Annotation to mark a RestTemplate bean to be configured 
 * to use a LoadBalancerClient
 * @author Spencer Gibb
 */
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Qualifier
public @interface LoadBalanced {
   
}

因为Spring Boot的自动配置机制,我们可以在这个包下看到一个LoadBalancerAutoConfiguration自动配置类:

/**
 * Auto configuration for Ribbon (client side load 
 * balancing).
 *
 * @author Spencer Gibb
 * @author Dave Syer
 * @author Will Tran
 */
@Configuration
@ConditionalOnClass(RestTemplate.class)
@ConditionalOnBean(LoadBalancerClient.class)
@EnableConfigurationProperties(LoadBalancerRetryProperties.class)
public class LoadBalancerAutoConfiguration {
   

    @LoadBalanced
    @Autowired(required = false)
    private List<RestTemplate> restTemplates = Collections.emptyList();//这里持有@LoadBalanced标记的RestTemplate实例

    @Bean
    public SmartInitializingSingleton loadBalancedRestTemplateInitializer(
            final List<RestTemplateCustomizer> customizers) {
        return new SmartInitializingSingleton() {
            //为restTemplate添加定制
            @Override
            public void afterSingletonsInstantiated() {
                for (RestTemplate restTemplate :LoadBalancerAutoConfiguration.this.restTemplates) {
                    for (RestTemplateCustomizer customizer 
                    : customizers) {
                        customizer.customize(restTemplate);
                    }
                }
            }
        };
    }

    @Autowired(required = false)
    private List<LoadBalancerRequestTransformer> transformers = Collections.emptyList();

    @Bean
    @ConditionalOnMissingBean
    public LoadBalancerRequestFactory loadBalancerRequestFactory(
            LoadBalancerClient 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值