最近在读spring-cloud-starter-alibaba-nacos-discovery源码时发现项目定义了多个ConditionalOnNacosDiscoveryEnabled,ConditionalOnLoadBalancerNacos注解,开始没有理解和我们平时使用@Configuration加上@ConditionalOnXXX注解有什么区别,直到自己在根据Nacos定义灰度负载均衡器时才发现这样做的好处。

因为我们负载均衡器启用的前置条件是启用了Nacos发现服务,如果没有ConditionalOnNacosDiscoveryEnabled注解我们就需要采用@ConditionalOnProperty(value = "spring.cloud.nacos.discovery.enabled", matchIfMissing = true) 来确定是否开启,这里就体现了这个注解的用处,方便复用。