0
点赞
收藏
分享

微信扫一扫

22-SpringBoot流程分析-run

22-SpringBoot流程分析-run

SpringBoot流程分析-run

  1. 启动计时器
  2. 执行监听器
  3. 准备环境
  4. 打印banner:可以resource下粘贴自定义的banner
  5. 创建context
refreshContext(context);

执行refreshContext方法后才真正创建Bean


22-SpringBoot流程分析-run_debug

1571373793325

源码解读

我们继续着上一篇的 debug 状态继续执行,如下:

1.完成了初始化动态,启动此应用

22-SpringBoot流程分析-run_java_0222-SpringBoot流程分析-run_spring_03

点进去 run 方法中,如下:

22-SpringBoot流程分析-run_debug_04

并设置断点,跳过去:

22-SpringBoot流程分析-run_spring_0522-SpringBoot流程分析-run_java_0622-SpringBoot流程分析-run_spring_07

2.初始化IOC容器,以及启动应用监听器

22-SpringBoot流程分析-run_debug_0822-SpringBoot流程分析-run_linux_0922-SpringBoot流程分析-run_debug_1022-SpringBoot流程分析-run_debug_1122-SpringBoot流程分析-run_java_12

3.开始环境模块准备

22-SpringBoot流程分析-run_python_1322-SpringBoot流程分析-run_linux_1422-SpringBoot流程分析-run_debug_15

还会创建了不少环境准备的信息。

4.打印Banner信息

22-SpringBoot流程分析-run_python_1622-SpringBoot流程分析-run_python_17


image-20220227172317638

可以看到这里打印了 Banner 信息。我们可以进去看看这个 printBanner的方法,如下:

22-SpringBoot流程分析-run_linux_18

继续进去看这个 SpringApplicationBannerPrinter 方法,如下:

22-SpringBoot流程分析-run_python_19

在 SpringApplicationBannerPrinter 类里面,我们知道默认会加载 banner.txt 进行打印,所以我们可以尝试来替换一下。

5.将断点设置在打印Banner处,去除其他断点

22-SpringBoot流程分析-run_debug_2022-SpringBoot流程分析-run_linux_21

好了,设置好断点之后,我们就可以修改设置一个 banner.txt 进行文件替换,然后再重新debug 进来看看效果。

6.设置 banner.txt ,替换打印的信息

22-SpringBoot流程分析-run_java_22

_ooOoo_  
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
. ' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='

.............................................
佛祖保佑 永无BUG

再次debug启动服务,可以查看打印信息如下:

22-SpringBoot流程分析-run_debug_23

注意:如果没有,那么则执行 maven clean 后,再执行。

7.创建应用上下文

22-SpringBoot流程分析-run_java_2422-SpringBoot流程分析-run_python_2522-SpringBoot流程分析-run_spring_2622-SpringBoot流程分析-run_python_27

我们可以查看一下变量,如下:

22-SpringBoot流程分析-run_spring_2822-SpringBoot流程分析-run_spring_29

当执行了 refreshContext(context); 之后,IOC容器里面就创建了所有需要的 Bean

22-SpringBoot流程分析-run_linux_30

8.统计启动加载时长,以及回调监听器的启动完毕方法

22-SpringBoot流程分析-run_linux_31

9.监听器准备完毕,返回IOC容器

22-SpringBoot流程分析-run_spring_3222-SpringBoot流程分析-run_java_33


举报

相关推荐

0 条评论