个人学习Spring Boot时所做总结,如有错误欢迎指正补充。
@生命周期顺序@项目启动的时候,都有那些执行的东西,和顺序。
从启动的入口进入:
可打断点一步一步的调试。
1、先开始项目基础计时
Startup startup = Startup.create();
2、创建上下文对象的类
ConfigurableApplicationContext context = null;
3、获取所有监听器(SpringApplicationRunListener)
SpringApplicationRunListeners listeners = getRunListeners(args);
4、遍历执行所有监听器中的Starting方法
5、开始准备环境
6、打印Banner图标
7、创建IOC容器
8、ApplicationContextInitializer监听器开始执行(IOC容器初始化的时候)
9、IOC容器开始准备:并不会准备全部的Bean对象,只准备基础的
10、当refreshContext(context);执行的时候,才会去配置文件找那些Bean把需要创建出来
11、到这里IOC容器的对象才算完成,上下文对象准备完成(初始化Bean)。
afterRefresh(context, applicationArguments);刷新一下
12、项目计时结束
startup.started();
其中包含了关于Spring Boot应用程序启动的信息。具体来说,截图显示了以下信息:
- startTime:一个Long类型的值,表示应用程序启动的开始时间,以Unix时间戳(毫秒)表示。
- timeTakenToStarted:一个Duration对象,表示应用程序启动所花费的时间。
Duration对象的seconds字段值为4215,nanos字段值为651000000。这意味着应用程序启动总共花费了4215秒加上651000000纳秒。Duration对象的字符串表示**“PT1H10M15.651S”**表示这段时间为1小时10分钟15.651秒。
因此,这个截图表示应用程序从启动到准备完毕总共花费了大约1小时10分钟的时间。这通常包括加载Spring上下文、初始化bean、连接数据库、启动内嵌服务器等所有启动相关的过程。
13、调用SpringApplicationRunListeners监听器,执行IOC容器加载完成的方法。(之前我们或许不知道是否IOC准备完成了,但是现在通过监听器我们得知已经IOC容器加载完成了)
14、执行Runner监听器回调,ConmmandLineRunner监听器和ApplicationRunner监听器会被执行
15、判断IOC容器对象是否在运行
16、是的话,调用监听器SpringApplicationRunListener,执行ready,项目启动完成的方法