详细描述SpringBoot执行流程?
时间: 2023-11-27 21:05:16 浏览: 90
SpringBoot整个启动流程可以分为以下几个步骤:
1. 初始化一个SpringApplication对象。
2. 通过SpringFactoriesLoader查找并加载所有的SpringApplicationRunListeners,通过调用starting()方法通知所有的SpringApplicationRunListeners:应用开始启动了。
3. 打印banner(可以自定义)。
4. 根据是否是web项目,来创建不同的ApplicationContext容器。
5. 创建一系列FailureAnalyzer,(拦截异常)。
6. 初始化ApplicationContext,将准备好的Environment(配置信息)设置给ApplicationContext。
7. 遍历调用所有的ApplicationContextInitializer的initialize()方法来对已经创建好的ApplicationContext进行进一步的处理。
8. 调用SpringApplicationRunListener的contextPrepared()方法,通知所有的监听者:ApplicationContext已经准备完毕。
9. 将所有的bean加载到容器中。
10. 调用SpringApplicationRunListener的contextLoaded()方法,通知所有的监听者:ApplicationContext已经装载完毕。
11. 执行该对象的run方法。
相关问题
SpringBoot执行流程
SpringBoot的执行流程可以简要概括为以下几个步骤:
1. 创建并配置SpringApplication对象:SpringApplication是SpringBoot应用的核心类,负责启动应用并管理应用的生命周期。在这一步中,SpringApplication会加载应用的配置文件,并根据配置文件的内容进行相应的配置。
2. 执行SpringApplicationRunListeners:SpringApplicationRunListeners是SpringApplication的监听器,用于在应用启动前和启动后执行一些额外的逻辑。在这一步中,SpringApplication会依次调用所有注册的监听器的相应方法。
3. 执行ApplicationContextInitializer:ApplicationContextInitializer是Spring的初始化器,用于在应用启动前对ApplicationContext进行一些初始化操作。在这一步中,SpringApplication会依次调用所有注册的初始化器的相应方法。
4. 创建并刷新ApplicationContext:在这一步中,SpringApplication会根据应用的配置和初始化操作创建一个ApplicationContext对象,并对其进行刷新。ApplicationContext是Spring的核心容器,负责管理应用中的所有Bean。
5. 执行ApplicationRunner和CommandLineRunner:ApplicationRunner和CommandLineRunner是SpringBoot提供的接口,用于在应用启动后执行一些额外的逻辑。在这一步中,SpringApplication会依次调用所有注册的ApplicationRunner和CommandLineRunner的相应方法。
总结起来,SpringBoot的执行流程可以简单描述为:创建并配置SpringApplication对象 -> 执行SpringApplicationRunListeners -> 执行ApplicationContextInitializer -> 创建并刷新ApplicationContext -> 执行ApplicationRunner和CommandLineRunner。\[1\]\[2\]
#### 引用[.reference_title]
- *1* *2* [SpringBoot执行流程](https://blog.csdn.net/m0_67393686/article/details/124419727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [SpringBoot 启动类 @SpringBootApplication 注解 以及执行流程](https://blog.csdn.net/qq_28289405/article/details/81302498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
SpringBoot的执行流程
SpringBoot的执行流程可以简要概括为以下几个步骤:
1. 创建SpringApplication对象并进行初始化。SpringApplication是SpringBoot应用的主类,它负责启动Spring应用的各个组件。
2. 执行SpringApplicationRunListeners的starting()方法。这些监听器负责在应用启动前执行一些初始化操作。
3. 创建并配置Spring应用的上下文环境。SpringApplication会根据配置信息创建并加载ApplicationContext,其中包括Bean的定义、Bean的依赖关系以及其他相关的配置信息。
4. 执行ApplicationContextInitializer的initialize()方法。这些初始化器负责在应用上下文创建后进行一些额外的配置工作。
5. 执行SpringApplicationRunListeners的environmentPrepared()方法。这些监听器负责在应用上下文创建前进行一些环境准备工作。
6. 执行SpringApplicationRunListeners的contextPrepared()方法。这些监听器负责在应用上下文创建后进行一些额外的准备工作。
7. 将命令行参数传递给Spring应用上下文。SpringApplication将命令行参数传递给ApplicationArguments对象,并将其注入到Spring应用上下文中。
8. 执行ApplicationContext的refresh()方法。这将触发整个Spring应用上下文的初始化和刷新过程。
9. 执行SpringApplicationRunListeners的contextLoaded()方法。这些监听器负责在应用上下文加载完成后执行一些后续处理操作。
10. 执行ApplicationRunner和CommandLineRunner的run()方法。这些接口的实现类可以定义一些在应用启动后执行的任务和逻辑。
11. 执行SpringApplicationRunListeners的finished()方法。这些监听器负责在应用启动完成后执行一些收尾工作。
以上是SpringBoot的执行流程的简要描述。具体而言,SpringBoot将Spring应用的启动过程进行了模板化,通过SpringApplication对象来统一管理和控制应用的各个组件。这样可以简化应用的配置和启动过程,提高了开发效率和可维护性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [SpringBoot执行流程](https://blog.csdn.net/m0_67393686/article/details/124419727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文