如果你在网上查找Spring Cloud 的资料,会发现有的客户端注解使用@EnableDiscoveryClient注解有的使用@EnableEurekaClient注解,现在来看看二者有什么区别:

看一下@EnableEurekaClient的源码

/**
 * Convenience annotation for clients to enable Eureka discovery configuration
 * (specifically). Use this (optionally) in case you want discovery and know for sure that
 * it is Eureka you want. All it does is turn on discovery and let the autoconfiguration
 * find the eureka classes if they are available (i.e. you need Eureka on the classpath as
 * well).
 *
 * @author Dave Syer
 * @author Spencer Gibb
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@EnableDiscoveryClient
public @interface EnableEurekaClient {

}

@EnableEurekaClient上有@EnableDiscoveryClient注解,可以说基本就是@EnableEurekaClient@EnableDiscoveryClient的功能。二者的功能差不多,但是使用的场景有区别。

  • 在注册中心为Eureka时,可以使用@EnableEurekaClient也可以使用@EnableDiscoveryClient
  • 注册中心为不为Eureka时,比如consul、zookeeper等,只能使用@EnableDiscoveryClient

可见@EnableEurekaClient的使用场景有局限性。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐