@EnableDiscoveryClient与@EnableEurekaClient区别
1. Spring Cloud服务发现的两种注解:
@EnableDiscoveryClient;
@EnableEurekaClient
此两种用法基本一致。
2. @EnableDiscoveryClient源码:
package org.springframework.cloud.client.discovery;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Import;
/**
* Annotation to enable a DiscoveryClient implementation.
* @author Spencer Gibb
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import(EnableDiscoveryClientImportSelector.class)
public @interface EnableDiscoveryClient {
/**
* If true, the ServiceRegistry will automatically register the local server.
*/
boolean autoRegister() default true;
}
3. @EnableEurekaClient源码
package org.springframework.cloud.netflix.eureka;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface EnableEurekaClient {
}
4. 共同点与不同点
共同点:都用于服务注册发现
不同点:
@EnableEurekaClient注解是基于spring-cloud-netflix依赖,只能为eureka作用,场景单一;
@EnableDiscoveryClient注解是基于spring-cloud-commons依赖,并且在classpath中实现, 适合于consul、zookeeper注册中心
5. 其他
从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。