临时~spring启动过程
1. 创建createBootstrapContext
a) 包含ApplicationEventMulticaster(事件广播主要组件)
b) 所有Bootstrapper接口继承类被初始化(包括EurekaConfigServerBootstrapper.intitialize)
2. 从Spring.factories中加载SpringApplicationRunListener(用于监控springboot启动流程事件)
3. 生成DefaultApplicationArguments(对main中args进行包装)
4. 核心:prepareEnvironment
a) getOrCreateEnvironment:创建environment
i. StandardServletEnvironment,(三个子类型ServletContextInitparams,ServletConfigInitParas)
ii. StandardEnvironment(包括systemEnvironment,systemProperties)
iii. StandardReactiveWebEnvironment(同上,暂时没有扩展逻辑)
b) configurePropertySources
c) 激发事件:listeners.environmentPrepared
d) bindToSpringApplication
5. printBanner
6. 核心prepareContext
a) 调用接口ApplicationContextInitializer
b) 激发事件:contextPrepared
c) 创建IOC容器()
d) 激发事件contextLoaded
7. 核心;refreshContext
a) 核心:调用org.springframework.context.support.AbstractApplicationContext#refresh
8. 核心:afterRefresh
9. 激发事件started
10. 调用方法callRunners(ApplicationRunner, CommandLineRunner)
Name_Generator: internalConfigurationBeanNameGenerator
1. SpringApplicationRunListener包含方法:
a) environmentPrepared(enviroment准备之后,applicationContext启动之前)
b) contextPrepared
c) contextLoaded
d) starting(run后直接调用,用来初始化)
e) started