1、config注册到eureka 在configService启动类的路径下,可以看到包含了ConfigServerEurekaServerConfigure类,在config-service项目启动时,会自动注入这个类。
config-service启动类
可以看到,在ConfigServerEurekaServerConfigure类存在一个注解@EnableEurekaServer,通过这个注解可以启动eureka server。启动eureka server
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({EurekaServerMarkerConfiguration.class})
public @interface EnableEurekaServer {
}
@Configuration(
proxyBeanMethods = false
)
public class EurekaServerMarkerConfiguration {
public EurekaServerMarkerConfiguration() {
}
@Bean
public Marker eurekaServerMarkerBean() {
return new Marker();
}
class Marker {
Marker() {
}
}
}
进入EnableEurekaServer注解后可以看到,import了EurekaServerMarkerConfiguration类,在项目启动时会自动注入Maker这个bean,那么这个Maker有什么作用呢?在这个jar包下面有一个spring.factories文件这是因为SpringBoot的SPI机制,SpringBoot在自动装配过程中,最终会加载META-INF/spring.factories配置文件,然后解析等。下面是spring.factories文件的内容,可以看到服务启动的时候会去自动装配EurekaServerAutoConfiguration这个类。
启动时自动装配EurekaServerAutoConfiguration类
再来看下EurekaServerAutoConfiguration类都做了什么?首先,使用@ConditionalOnBean注解,这个注解的语义是当spring容器中存在指定类的实例对象的时候,配置才会生效。这也就对应了之前使用EnableEurekaServer时注入maker这个bean。再看看EurekaServerInitializerConfiguration类都做了什么,该类实现了SmartLifecycle接口,在服务启动时会调用start()方法,去启动eureka server。
EurekaServerAutoConfiguration类启动eureks server服务端
eureka启动配置类