SpringBoot初始化器解析
1.容器初始化,会读取所有jar包下的META-INF/spring.factories路径的ApplicationContextInitializer然后初始化为对象
org.springframework.boot.SpringApplication#SpringApplication(org.springframework.core.io.ResourceLoader, java.lang.Class<?>...)
org.springframework.boot.SpringApplication#applyInitializers
刷新容器的时候进行回调。
2.第二种:手动添加监听器
添加好会在如下执行:
org.springframework.boot.SpringApplication#prepareContext
3.第三种: 在application.properties里面添加如下属性,注意这里有个DelegatingApplicationContextInitializer的初始化器回去寻找配置文件下的
context.initializer.classes属性对应的class,然后实例化,然后进行回调
执行流程如下:
org.springframework.boot.SpringApplication#prepareContext
org.springframework.boot.SpringApplication#applyInitializers
org.springframework.boot.context.config.DelegatingApplicationContextInitializer#initialize
org.springframework.boot.context.config.DelegatingApplicationContextInitializer#getInitializerClasses