在使用Spring Cloud feign使用中在使用服務(wù)發(fā)現(xiàn)的時(shí)候提到了兩種注解,一種為@EnableDiscoveryClient,一種為@EnableEurekaClient,用法上基本一致。
spring cloud中discovery service有許多種實(shí)現(xiàn)(eureka、consul、zookeeper等等),@EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。
其實(shí)用更簡(jiǎn)單的話(huà)來(lái)說(shuō),就是如果選用的注冊(cè)中心是eureka,那么就推薦@EnableEurekaClient,如果是其他的注冊(cè)中心,那么推薦使用@EnableDiscoveryClient。
@EnableDiscoveryClient
/**
* 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;
}
老版@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注解,可以說(shuō)基本就是EnableEurekaClient有@EnableDiscoveryClient的功能,另外上面的注釋中提到,其實(shí)@EnableEurekaClientz注解就是一種方便使用eureka的注解而已,可以說(shuō)使用其他的注冊(cè)中心后,都可以使用@EnableDiscoveryClient注解,但是使用@EnableEurekaClient的情景,就是在服務(wù)采用eureka作為注冊(cè)中心的時(shí)候,使用場(chǎng)景較為單一。