微服务学习之springCloud---@EnableDiscoveryClient和@EnableEurekaClient的区别

在使用Spring Cloud feign使用中在使用服务发现的时候提到了两种注解,一种为@EnableDiscoveryClient,一种为@EnableEurekaClient,用法上基本一致。

在 文章 What’s the difference between EnableEurekaClient and EnableDiscoveryClient? 中:

There are multiple implementations of "Discovery Service" (eureka, consul, zookeeper). @EnableDiscoveryClient lives

in spring-cloud-commons and picks the implementation on the classpath. @EnableEurekaClient lives in

spring-cloud-netflix and only works for eureka. If eureka is on your classpath, they are effectively the same.

(翻译:

spring cloud中discovery service有许多种实现(eureka、consul、zookeeper等等),@EnableDiscoveryClient基于
spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。其实用更简单的话来说,
就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。)

@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的功能,另外上面的注释中提到,其实@EnableEurekaClient注解就是一种方便使用eureka的注解而已,可以说使用其他的注册中心后,都可以使用@EnableDiscoveryClient注解,但是使用@EnableEurekaClient的情景,就是在服务采用eureka作为注册中心的时候,使用场景较为单一。

总之,如果你的classpath中添加了eureka,则它们的作用是一样的。

声明:内容整理自网络,仅供学习使用。

猜你喜欢

转载自blog.csdn.net/xingkongtianma01/article/details/80706419