TL; DR :
@LoadBalanced是标记注释,
@RibbonClient用于配置目的。
@LoadBalanced
用作标记注释,指示被注释的对象
RestTemplate应使用
RibbonLoadBalancerClient与您的服务进行交互。
反过来,这允许您对传递给的网址使用“逻辑标识符”
RestTemplate。这些逻辑标识符通常是服务的名称。例如:
restTemplate.getForObject("http://some-service-name/user/{id}", String.class, 1);some-service-name逻辑标识符在哪里。
@RibbonClient
用于配置功能区客户端。
是否需要@RibbonClient?
没有!如果您正在使用服务发现,并且对所有默认的功能区设置都没问题,那么甚至不需要使用
@RibbonClient注释。
我@RibbonClient
什么时候应该使用?
至少有两种情况需要使用
@RibbonClient
- 您需要为特定的功能区客户端自定义功能区设置
- 您没有使用任何服务发现
自定义功能区设置:
定义一个
@RibbonClient
@RibbonClient(name = "some-service", configuration = SomeServiceConfig.class)
name
-将其设置为与功能区调用的服务相同的名称,但需要其他自定义功能区以与功能区交互。configuration
-将其设置为@Configuration
所有定义为的类@Beans
。确保 不 选择此类,@ComponentScan
否则它将覆盖所有功能区客户端的默认设置。
请参阅Spring Cloud
Netflix文档中的“自定义RibbonClient”部分(链接)
在不进行服务发现的情况下使用功能区
如果您未使用Service
Discovery,则注释
name字段
@RibbonClient将用于
application.properties在您传递给的URL
中的前缀以及“逻辑标识符”中为您的配置添加前缀
RestTemplate。
定义一个
@RibbonClient
@RibbonClient(name = "myservice")
然后在你的
application.properties
myservice.ribbon.eureka.enabled=falsemyservice.ribbon.listOfServers=http://localhost:5000, http://localhost:5001



