一、configService启动

183 阅读1分钟

1、config注册到eureka 在configService启动类的路径下,可以看到包含了ConfigServerEurekaServerConfigure类,在config-service项目启动时,会自动注入这个类。

image.png

config-service启动类

可以看到,在ConfigServerEurekaServerConfigure类存在一个注解@EnableEurekaServer,通过这个注解可以启动eureka server。

image.png

启动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这个类。

image.png

启动时自动装配EurekaServerAutoConfiguration类

再来看下EurekaServerAutoConfiguration类都做了什么?首先,使用@ConditionalOnBean注解,这个注解的语义是当spring容器中存在指定类的实例对象的时候,配置才会生效。这也就对应了之前使用EnableEurekaServer时注入maker这个bean。再看看EurekaServerInitializerConfiguration类都做了什么,该类实现了SmartLifecycle接口,在服务启动时会调用start()方法,去启动eureka server。

截屏2022-09-03 17.50.35.png

EurekaServerAutoConfiguration类启动eureks server服务端

image.png

eureka启动配置类