What's the difference between EnableEurekaClient and EnableDiscoveryClient?

In some applications, I saw people are using EnableEurekaClient. And some other example applications are using EnableDiscoveryClient.

Is there any difference between these two?


Solution 1:

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.

Solution 2:

Discovery service concept in spring cloud is implemented in different ways like Eureka, consul, zookeeper etc. If you are using Eureka by Netflix then @EnableEurekaClient is specifically for that. But if you are using any other service discovery including Eureka you can use @EnableDiscoveryClient.

Solution 3:

In terms of its practicality and simplicity, if the registered center is eureka, then @EnableEurekaClient is recommended. If it is another registration center, @EnableDiscoveryClient is recommended.

Solution 4:

@EnableEurekaCient will initilize the service discovery using eureka server, its like explicitly specifying to use EUREKA

While @EnableDiscovery Client will register dicovery service using the jar available in classpath like consul, Eureka, Kubernetes.