type
status
date
slug
summary
tags
category
icon
password
这里写文章的前言:
一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
📝 题记
公司的注册中心一直使用的是Eureka,其实在就应该写一篇记录来记录一下或者专门来阅读一下Eureka的源码. SpringCloud全家桶中的组件,如果时间是充足的话,其中的源码阅读下,还是很不错的. 其中是可以学习到很多知识的.
构建项目 : 地址https://github.com/baoyang23/boot-case-self/tree/master/txlcninit , 这里只用看txlcn-server模块的依赖和代码即可,仅仅只有依赖和启动类,并无其他的东西了.
code
项目构建完了,就先启动看下有没有问题,至少保证搭建是ok的. 如果启动没问题的话,那么我们就可以肆无忌惮的去阅读其源码了.
在配置文件中加上打印log的级别和包,这样可以更好的看到源码里面打印的更多的log.
初次启动,就可以看下log的输出,定位下是那些类打印的,然后我们可以对那些类进行debug阅读. 这里我们可以看到AbstractInstanceRegistry 这个注册类的输出log
启动
我们在启动类加上 @EnableEurekaServer 这个注解,然后在application.yml中也好配置信息,启动即可. 那么这个注解有这么神奇,就可以直接加载出 Eureka 中的全部内容 ?
再来看一个东西, spring-cloud-netflix-eureka-server:2.2.1.RELEASE 这个maven的依赖. 2.2.1是引入的版本号.
然后看到 META-INF下spring.factories 这个文件. Spring在启动的时候,会读取这个地方的该文件.所以也就是会读取 org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration 这个内容. 从名字上看,就是eureka的server端自动配置.
EurekaServerAutoConfiguration
org.springframework.cloud.netflix.eureka.server.EurekaServerInitializerConfiguration#start 该方法是如何被调用的? 可以看到这个方法是对 eurekaServerBootstrap进行初始化操作. 并且也有对应的event给发送出去. 在SpringBoot源码中是是可以看到有也有类似的event给publish出去.
🤗 总结归纳
📎 参考文章
有关文章的问题,欢迎您在底部评论区留言,一起交流~