Eureka Server 是 Netflix 开发的注册中心,Eureka Server 的配置搭建比较简单,通过一个简单的依赖,再通过在启动类上增加一个注解,还有简单的配置文件就可以了。那 SpringBoot 的项目是如何通过注解变成注册中心呢?其实流程比较简单,本文简单的整理了一下它的开关流程。
Eureka Server 开关流程
使用 Eureka Server 时需要引入 Eureka Server 的 starter 依赖 spring-cloud-starter-netflix-eureka-server,这是最基本的一步。通过该 starter 依赖,Maven 会自动的下载其相关具体依赖,Eureka Server 的具体依赖是 spring-cloud-netflix-eureka-server。通过该依赖的 Jar 包中可以找到 spring.factories 的配置,该配置文件如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration
通过上面的配置文件,我们来查找 EurekaServerAutoConfiguration 这个类。打开该类以后,在该类上有一个注解,该注解如下:
Marker.class}) ({
到这一步就基本可以确定是否加载 EurekaServerAutoConfiguration 这个类了。
接着,我们去看一下 @EnableEurekaServer 这个注解,该注解有一个 @Import 的注解,如下:
EurekaServerMarkerConfiguration.class}) ({
此时,看一下 EurekaServerMarkerConfiguration 这个类,代码如下:
publicclassEurekaServerMarkerConfiguration { publicEurekaServerMarkerConfiguration() { } publicEurekaServerMarkerConfiguration.MarkereurekaServerMarkerBean() { returnnewEurekaServerMarkerConfiguration.Marker(); } classMarker { Marker() { } } }
从代码中可以看出,整个类什么具体的事都没有做,只实例化了一个 Marker 类。
回到 @EnableEurekaServer 注解前面的流程,有一个 @ConditionalOnBean 的注解,该注解就表示如果内存中有 Market.class 类,则加载 EurekaServerAutoConfiguration 类,这样整个流程就串起来了。
小结
上面的代码简单的看了 SpringBoot 项目如何变成 Eureka Server 的开关,这里我整理了一个简单的流程图,希望可以对大家有所帮助。