SpringBoot的启动流程
以下是个人的理解,整理出来的大致流程:
- run方法执行 -->
- StopWatch.started 记录任务执行时间 -->
- system.setProperty headless属性设置 -->
- getRunListener,初始化启动监听器,顺便加载META-INF/spring.factories文件,所有配置文件类名) -->
- 通过反射拿到配置文件实例,存入缓存中 -->
- listeners.starting() 启动各种监听 -->
- prepareEnvironment环境配置 -->
- this.printBanner -->
- createApplicationContext 分是否为web项目,WebApplicationType -->
- getSpringFactoriesInstances,通知已经完成上下文件配置了 -->
- prepareContext 刷新上下文,加载所有bean到容器 -->
- refreshContext 如果是web,则再次刷上下文,启动server -->
- listeners.started(context) 发布启动完成的事件 --->
- this.callRunners -->回调Running 完成启动
如果您对这个理解问题,欢迎在评论区留些您的理解。
生活赋予我们一种巨大的和无限高贵的礼品,这就是青春:充满着力量,充满着期待志愿,充满着求知和斗争的志向,充满着希望信心和青春。