今天看EnableEurekaClient 看了半天,然后搜索这个注解的使用者,根本没找到.结果在网上看别人的用法,对比了下注解实现的不一样,截图下来


第一幅图是v1.2.2分支的代码.如上图,而第二幅图是master分支的代码.这个修改是2017年9月分修改的,不知道为什么.
commit上面也没说明具体原因

看不了EnableEurekaClient实现,就来看EnableDiscoveryClient的实现吧.之前EnableEurekaClient的实现也是通过EnableDiscoveryClient来实现的.
在看这个问题之前先来看一下基本用法

在这里先关注SpringBootApplication注解的定义

这里用到了EnableAutoConfiguration注解.看其定义

这里引用了AutoConfigurea* 这个bean,进去仔细看就是解析文件.
下面看
eureka.client文件下面这个文件的定义

好了到这里就开始进入EnableDiscoveryClient注解了.EurekaDiscoveryClientConfiguration这个类是关键,这里开启了
Marker bean的注册.为后面其它条件注入的client提供了支持.
现在来看看EnableDiscoveryClient注解的定义

这里import了EnableDiscoveryClientImportSelector操作.这个会在spring启动时候,自动处理注解的时候调用.看其主要实现

这里会注册AutoServiceRegistrationConfiguration这样一个bean.其描述如下:

这里也就是实现了一个AutoServiceRegistrationProperties这个类的bean注册.
以上处理都是为EurekaClientAutoConfiguration这个类作准备的,这个是进行服务注册及处理的地方了.具体细节大家自己去看

以上部分是我对EnableDiscoveryClient的理解,如有错误欢迎大家指正.