版本:
'springCloudVersion', "Hoxton.SR4" 'org.springframework.boot' version '2.3.0.RELEASE'
源码解析:
@EnableEurekaServer--做了什么事
点进源码内容如下:
这里面我们只需要关注@Import(EurekaServerMarkerConfiguration.class)
发现class EurekaServerMarkerConfiguration 几乎什么都没有做只是实例化一个Marker的bean
Marker是什么,我们暂时可以理解成一个eureka-server的标记:
因为springboot的启动时默认扫描启动类同目录下,所以在eureka-server中指定了spring.factories文件,用来记录项目包外需要注册的bean类名,或者说注册项目包外的bean
spring.factories文件内容:
继续看 EurekaServerAutoConfiguration 中的内容
EurekaServerAutoConfiguration配置类中我们暂时只需要关注两个地方:
.@ConditionalOnBean 和 变量EUREKA_PACKAGES
@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)含义:spring容器中存在指定class的示例对象时,对应的配置才生效,也就是我们之前在@EnableEurekaServer中看到的Marker内部类,容器中存在Marker实例eureka server的配置才会生效(只有满足该条件springboot才会进一步加载eureka server相关的配置)
不了解@ConditionalOnBean和个性加载的可以看下面的图片作为简单的了解
变量EUREKA_PACKAGES:指定了springboot需要扫描的Eureka服务器所需资源的包列表
所以从以上内容看我们在使用时只需要两步就可以成功的启动一个eureka server服务
1.引入 org.springframework.cloud:spring-cloud-starter-netflix-eureka-server 依赖
2.在启动类上添加注解:@EnableEurekaServer
-----------------------------启动原理 结束-----------------------------------------------未完待续--后续会添加优化和更深层次源码解析