springboot启动周期流程
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
SpringBoot启动周期流程详解 SpringBoot以其简洁的配置和快速的启动能力,成为了现代Java开发中的主流框架。了解SpringBoot的启动过程对于开发者来说至关重要,它可以帮助我们更好地理解和调试应用程序。接下来,我们将深入探讨SpringBoot的启动流程。 1. **初始化阶段**: - **引导加载器(Bootstrap ClassLoader)**:SpringBoot应用的启动是从`main`方法开始的,这个方法通常位于一个`SpringBootApplication`类型的类中。执行`SpringApplication.run()`会启动引导过程。 - **设置环境属性**:加载`application.properties`或`application.yml`等配置文件,处理命令行参数和系统属性。 2. **环境构建**: - **创建SpringApplication对象**:该对象包含了SpringBoot应用的环境、配置和运行参数。 - **设置ApplicationContext类型**:默认是`AnnotationConfigApplicationContext`,也可以自定义为其他类型的上下文。 - **配置监听器**:添加各种事件监听器,例如`ApplicationEnvironmentPreparedEvent`,`ApplicationPreparedEvent`等,它们会在特定启动阶段触发。 3. **环境准备**: - **创建Environment**:收集所有配置源,包括properties、yaml、命令行参数等,形成Environment对象。 - **调用ApplicationEnvironmentPreparedEvent**:发布此事件,允许在Environment准备完成前进行自定义。 4. **应用准备**: - **创建ApplicationContext**:根据之前设置的类型创建ApplicationContext。 - **加载主配置**:找到主配置类,通常是带有@SpringBootApplication注解的类,将其作为配置元数据加载到ApplicationContext。 - **调用ApplicationPreparedEvent**:发布此事件,允许在ApplicationContext准备好但尚未启动时进行自定义。 5. **应用启动**: - **注册BeanDefinition**:扫描指定的包,注册带有@Component、@Service、@Repository、@Controller等注解的类为Bean。 - **处理自动配置**:通过`@EnableAutoConfiguration`注解,SpringBoot会自动识别并配置相关的Bean。 - **注册监听器和Servlet**:将带有WebApplicationInitializer或ServletContainerInitializer接口的类注册为监听器或Servlet。 - **调用ApplicationReadyEvent**:发布此事件,表示应用已经准备就绪,可以开始处理请求。 6. **应用运行**: - **启动Tomcat或其他嵌入式服务器**:如果项目包含Web模块,SpringBoot会自动配置并启动内嵌的HTTP服务器。 - **处理Web应用初始化**:如DispatcherServlet的配置,Spring MVC的配置等。 - **处理剩余的事件**:如ApplicationContextInitializedEvent,表明ApplicationContext已初始化完成。 7. **应用关闭**: - **监听关闭信号**:SpringBoot应用监听到系统退出或JVM终止信号后,会触发关闭流程。 - **清理资源**:销毁ApplicationContext,释放所管理的所有Bean,关闭连接池、定时任务等。 理解SpringBoot的启动流程对于优化应用性能、解决启动问题以及实现自定义扩展都非常有帮助。在实际开发中,我们可以利用这些知识来定制我们的应用,比如在特定阶段添加自定义逻辑,或者调整配置以提升应用性能。希望以上的讲解能帮助你深入理解SpringBoot的启动机制。
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
- 1
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/6ccb4c9319f347a287d57fd348aca89a_mianyao1004.jpg!1)
- 粉丝: 46
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 打包和分发Rust工具.pdf
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
- C语言-leetcode题解之第166题分数到小数.zip
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)