临时~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

原文地址:https://www.cnblogs.com/snow-man/p/15255369.html