main方法进入:SpringApplication.run 静态方法
一,初始化SpringApplication实例,构造器内执行:
1,判断应用程序的类型(none,servlet,reactive)
2,加载所有初始化容器(获取默认类加载器:AppClassLoader,通过反射创建实例)
3,加载所有监听器
4,找到程序运行的主类,并通过反射创建实例
二,调用SpringApplication 实例 的run方法
1,创建并启动StopWatch计时器
2,配置系统属性java.awt.headless
3,注册run listener
4,加载配置环境参数
5,打印Banner
6,创建容器:AnnotationConfigServletWebServerApplicationContext
7,设置异常报告器对象
8,准备容器上下文基本环境
9,调用refreshContext,刷新容器上下文(IOC初始化)
10,调用afterRefresh
11,停止StopWatch计时
12,发送应用上下文启动完成事件ApplicationStartedEvent
13,执行所有运行期Runner(ApplicationRunner、CommandLineRunner)
14,发布spring应用启动完成事件,ApplicationReadyEvent(准备好提供服务,ready to service requests.)