SpringBoot面试题09-SpringBoot启动流程

一、启动流程一览

二、对应启动代码

三、结构型答案总结

问:请聊一聊 SpringBoot 的启动流程?

答:

总: SpringBoot 启动,基本本质就是加载各种配置信息,然后初始化 IOC 容器并返还。

分: 在其启动的过程中会做这么几个事情。

首先,当我们在启动类执行 SpringApplication.run 运行这行代码的时候,在它的构造方法内部其实会做两件事情:

  1. 创建 SpringApplication 对象;

  2. 执行 run 方法。

其次,在创建 SpringApplication 对象的时候,在它的构造方法内部主要做 3 个事情:

  1. 确认 web 应用类型,一般情况下是 Servlet 类型,这种类型的应用,将来会自动启动一个 Tomcat。

  2. spring.factories 配置文件中,加载默认的 ApplicationContextInitializer 和 ApplicationListener。

  3. 记录当前用的主启动类(项目中被@SpringBootApplicaiton注解的类),将来做初始化使用。


最后,对象创建完了以后,再调用该对象的 run 方法,在该方法内部主要做 4 个事情:

  1. 准备 Environment 对象,它里面会封装一些当前应用运行环境的参数,比如环境变量等等。

  2. 实例化容器,这里仅仅只是创建 ApplicationContext 对象。

  3. 容器创建好了以后,会为容器做一些准备工作,比如为容器设置 Environment、BeanFactoryPostProcessor / 后置处理器,并加载主类对应的 BeanDefinition。

  4. 刷新容器,就是我们常说的 refresh,在这里会真正的创建 Bean 实例。

总: 总结一下我们说的,其实 SpringBoot 启动的时候核心就两步:

  • 创建 SpringApplication 对象

  • 以及 run 方法的调用

在 run 方法中会真正的实例化容器,并创建容器中需要的 Bean 实例,最终返回。

相关推荐
汤姆yu2 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶2 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
biyezuopinvip3 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
JavaGuide4 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
figo10tf4 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva5 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
橙露5 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
程序员敲代码吗5 小时前
Spring Boot与Tomcat整合的内部机制与优化
spring boot·后端·tomcat
NuageL5 小时前
原始Json字符串转化为Java对象列表/把中文键名变成英文键名
java·spring boot·json
jzheng86105 小时前
Spring Boot(快速上手)
java·spring boot·后端