文章目录
本文讲解
springCloud怎么整合并自动装配eureka并启动eureka-server。
一、装配流程解析
1.1@EnableEurekaServer注解解析
1.1.1配置流程
在引入
eureka的依赖之后,配置eureka server的时候需要我们在springBoot的启动类上面加个@EnbaleEurekaServer的注解标识启动一个eureka server。
1.1.2 注解剖析@EnableEurekaServer
这里使用了
Import导入了一个配置类EurekaServerMarkerConfiguration

1.1.3 EurekaServerMarkerConfiguration
这里往
spring容器中添加了一个bean,类名叫做Marker,好像只是做个开启的标记,自动装配的逻辑不在这里,我们看下spring.factories看相关的自动装配的逻辑

1.1.4 spring.factories配置解析
这里可以发现
eureka-server的jar中在spring.factories文件中自动装配了一个类EurekaServerAutoConfiguration

1.1.5 EurekaServerAutoConfiguration解析
1.1.5.1 EurekaServerAutoConfiguration类声明解析
这里重点关注两个配置,一个是
ConditionalOnBean,判断如果容器中存在Marker这个bean才进行自动装配,因为之前我们已经在@EnableEurekaServer中注入了,所以这个是没问题,第二个是使用Import导入了一个EurekaServerInitializerConfiguration来进行初始化流程,还有就是加载和装配配置类

1.1.5.2 EurekaServerAutoConfiguration类属性解析
这里注入了了一些
bean,其中还包括eurekaClient和ClientConfig,这个是因为eurekaServer依赖于eurekaClient来和集群其他节点进行通信。

1.1.5.3 EurekaServerAutoConfiguration类装配bean
这里会装配
dashboard的controller,然后对注解表进行创建,然后初始化集群节点信息类对象,再初始化EurekaServerContext也就是eurekaserver的上下文,然后装配bootstrap类用来做项目启动和停止的,最后就是初始化jersey框架的bean,对外暴露restful接口。

1.1.6 EurekaServerInitializerConfiguration类解析
这个类是在自动装配的时候导入的,是用于做
eurekaServer的初始化逻辑的,这里实现了SmartLifecycle,spring会在初始化完成后,回调Lifecycle的start方法
- 这里
start方法中分首先会开启一个线程,执行eurekaServerBootstrap#contextInitialized方法,然后发布EurekaRegistryAvailableEvent事件,设置running为true,再发布EurekaServerStartedEvent事件

1.1.7 EurekaServerBootstrap#contextInitialized
首先初始化
eureka environment,然后初始化context,最后将context设置到ServletContext中

1.1.7.1 EurekaServerBootstrap#initEurekaEnvironment
其实就是从配置文件中获取当前的
eureka environment1

1.1.7.2 EurekaServerBootstrap#initEurekaEnvironment
这里重点就是他会去集群中的其他节点拉取注册表信息。

1.1.7 EurekaServerContext
在讲解
EurekaServerAutoConfiguration自动装配的时候会自动注入bean->EurekaServerContext,配置eureka的上下文,构造的时候会传入PeerEurekaNodes与PeerAwareInstanceRegistry注册表信息,我们在这个类中发现他会去初始化和小会这两个组件。在initialize会启动peerEurekaNodes和初始化注册表

1.1.7.1 PeerEurekaNodes#start
- 首先调用
updatePeerEurekaNodes更新集群节点信息,就是创建节点对象- 创建一个定时任务定时更新节点信息

1.1.7.2 PeerAwareInstanceRegistryImpl#init
这里初始化了一些很重要的组件,后续我们会讲解,其中包括服务续约,自我保护,
cache,初始化注册表等关键信息
本文详细解析了Spring Cloud Eureka Server的装配流程,从@EnableEurekaServer注解开始,深入探讨了EurekaServerMarkerConfiguration、spring.factories配置、EurekaServerAutoConfiguration及其装配逻辑,包括EurekaServerInitializerConfiguration的初始化过程,以及EurekaServerBootstrap的contextInitialized方法,涉及Eureka环境和上下文的初始化,集群节点信息的获取与注册表的初始化。通过本文,读者能理解Eureka Server如何启动并与其他节点通信。


663

被折叠的 条评论
为什么被折叠?



