preparedContext方法最后一步,所有的listener回调contextLoad方法
至此,容器准备完毕。
step over回到run方法的第303行
step into 进入到refreshContext方法
进入refresh方法
再次进入refresh方法
再次进入refresh方法
这里就是IOC容器的容器初始化方法
实例化所有的单实例Bean,这就是refreshContext方法的作用
回到run方法,来到afterRefresh方法
step into afterRefresh方法
afterRefresh方法为空
再往下的代码是记录时间和日志
step over 到310行
进入callRunnser方法
这方法第753,754行是context容器获取ApplicationRunner和CommandRunner两个类型的Bean
再往下,就是进行回调,最后返回IoC容器。
二、Spring Boot 启动流程总结
run方法启动流程:
- 准备环境
- 执行ApplicationContextInitializer.initialize()
- 监听器SpringApplicationRunListener回调contextPrepared
- 记载主配置类定义信息
- 监听器SpringApplicationRunListener回调contextLoaded
- 刷新启动IoC容器
- 扫描加载所有容器中的组件
- 包括从META-INF/spring.factories中获取的所有EnableAutoConfiguration自动配置类
- 回调容器中所有的ApplicationRunner、CommandLineRunner的run方法
- 监听器SpringApplicationRunListener回调finished方法