几个重要的事件回调机制

配置在META-INF/spring.factories

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

ApplicationContextInitializer

SpringApplicationRunListener

 

只需要放在ioc容器中

ApplicationRunner

**CommandLineRunner**

 

启动流程:

1、创建SpringApplication对象

 springboot启动配置原理之一(创建SpringApplication对象) 随笔 第1张

 springboot启动配置原理之一(创建SpringApplication对象) 随笔 第2张springboot启动配置原理之一(创建SpringApplication对象) 随笔 第3张

 

initialize(sources);
private void initialize(Object[] sources) {
 
    //保存主配置类
    if (sources != null && sources.length > 0) {
        this.sources.addAll(Arrays.asList(sources));
    }
    //判断当前是否一个web应用
    this.webEnvironment = deduceWebEnvironment();
    //从类路径下找到META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来
    setInitializers((Collection) getSpringFactoriesInstances(
        ApplicationContextInitializer.class));
    //从类路径下找到ETA-INF/spring.factories配置的所有ApplicationListener
    setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
    //从多个配置类中找到有main方法的主配置类
    this.mainApplicationClass = deduceMainApplicationClass();
}
 //判断当前是否一个web应用
springboot启动配置原理之一(创建SpringApplication对象) 随笔 第4张
//从类路径下找到META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来

 springboot启动配置原理之一(创建SpringApplication对象) 随笔 第5张

 //从类路径下找到ETA-INF/spring.factories配置的所有ApplicationListener

springboot启动配置原理之一(创建SpringApplication对象) 随笔 第6张

 

 //从多个配置类中找到有main方法的主配置类

 springboot启动配置原理之一(创建SpringApplication对象) 随笔 第7张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄