本文主要是介绍SpringCloud复习:(2)@LoadBalanced注解的工作原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@LoadBalanced注解标记了一个RestTemplate或WebClient bean使用LoadBalancerClient来进行负载均衡。
LoadBalancerAutoConfiguration类给带注解的@RestTemplate添加了拦截器:LoadBalancerInterceptor.
具体流程如下:
首先定义一个LoadBalancerInterceptor
然后定义了一个RestTemplateCustomizer bean,这个bean 通过customize方法将传入的RestTemplate添加上边定义的LoadBalancerInterceptor,最后再定义一个SmartInitializingSingleton bean,容器创建时,会调用其afterSingletonsInstantiated方法,在这个方法里传入使用了@LoadBalanced注解标记的RestTemplate,然后调用上一步中的RestTemplateCustomizer的customize方法来给RestTemplate添加Interceptor.
总结: 通过@LoadBalanced注解,来判断哪些RestTemplate需要负载均衡功能。通过给RestTemplate添加拦截器来具体实现负载功能。
可以在方法中注入LoadBalancerClient,然后调用choose方法,来获取ServiceInstance对象,以进一步获取某个服务的信息,比如主机名、端口号等。
这篇关于SpringCloud复习:(2)@LoadBalanced注解的工作原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!