- 创建默认的引导上下文对象,保存上下文参数信息(DefaultBootstrapContext)
- 配置运行程序的系统环境变量,以确保正确运行
- 获取运行在SpringApplication上所有的监听器(主要从autoConfiguration, springboot的jar中的spring.factory路径里面的监听器,和自动装配在一起)
- 通知所有监听器启动应用程序
- 封装应用程序的参数,比如server,port等信息
- 创建应用程序上下文
- 设置应用程序的启动方式
- 启动应用程序上下文,通过refresh实现
- 上下文刷新后执行一些后置处理器
- 通知所有监听器应用程序已经启动,传递上下文对象和启动时间
- 运行所有已经注册的runner
总节面试问到springboot的启动过程:
- 初始话SpringApplication, 运行SpringApplication的run方法
- 读取spring.factories的多个初始化器和监听器
- 配置项目中的环境变量,jvm配置信息,配置文件信息
- 初始话环境,创建环境对象
- 创建spring容器对象(ApplicationContext)
- 调用spring的refresh加载IOC容器,自动配置类,并创建bean等信息
- 调用的很多监听器并传递上下文对象
- 运行相关banner