源码分析:简单分析EurekaClient启动过程

本文详细分析了Eureka Client的启动过程,从@EnableDiscoveryClient注解开始,逐步探讨了Spring的自动装配机制,涉及EnableDiscoveryClientImportSelector、SpringFactoryImportSelector、EurekaDiscoveryClientConfiguration、EurekaClientAutoConfiguration等关键类。在EurekaClientAutoConfiguration中,配置了eureka.client和eureka.instance的YAML设置,并最终创建了EurekaClient,实现了服务注册、服务获取和服务续约的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Eureka Client通过@EnableDiscoveryClient启动

 

2、查看EnableDiscoveryClient注解,里面引入了EnableDiscoveryClientImportSelector.class类给spring托管

 

3、查看EnableDiscoveryClientImportSelector类源码。这个类比较简单,看不出下一步流程,但可以看到继承了SpringFactoryImportSelector类。

4、查看SpringFactoryImportSelector类,可以看出实现了spring的自动装配接口DeferredImportSelector并实现了selectImports方法。

 

5、通过运行可以发现,EnableDiscoveryClientImportSelector启动时执行selectImports是为了得到要引入的工厂factories配置类org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration。

 

6、通过搜索找到EurekaDiscoveryClientConfiguration类的入口(在spring-cloud-netflix-eureka-client-1.3.0.RELEASE.jar包)

 

7、EurekaDiscoveryClientConfiguration里面创建了一个空marker的bean

 

8、到这一步,看似无从分析下去。但我们可以回看第六步的spring.factories文件。挨个看了一遍配置,只有EurekaClientAutoConfiguration类里面初始化了很多bean。

9、先看EurekaClientAutoConfiguration类的头部,可以看到初始化这个类的条件中就有第7步创建的Marker.class,到此可以跟上面的步骤串了起来。

10、在看看EurekaClientAutoConfiguration类的内容,eurekaClientConfigBean方法初始化了application.yml中eureka.client节点的配置(如下图)

11、在看看EurekaClientAutoConfiguration类的内容,eurekaInstanceConfigBean方法初始化了application.yml中eureka.instance节点的配置(如下图)

 

 

12、通过查看EurekaClientAutoConfiguration类的内容,其中有两个地方都创建了EurekaClient。通过运行可知,执行的是RefreshableEurekaClientConfiguration类中的CloudEurekaClient类。

 

13、*我们上网查资料的时候,可以知道eureka核心的类是DiscoveryClient类。

 

http://blog.didispace.com/springcloud-sourcecode-eureka/

14、查看CloudEurekaClient类,可以看到它实际继承的就是DiscoveryClient类。在CloudEurekaClient构造函数中可看到执行的就是DiscoveryClient类的构造函数。

 

15、跟踪进去,可看到DiscoveryClient类中的初始化操作。(服务注册、服务获取、服务续约)参考步骤13的链接。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值