当前位置: 首页 > news >正文

Spring Boot启动过程?

目录

1. 启动入口

2. SpringApplication 初始化

3. 准备环境

4. 创建应用上下文(ApplicationContext)

5. 准备应用上下文

6. 刷新应用上下文

7. 启动 Web 服务器(若为 Web 应用)

8. 发布 ApplicationStartedEvent 事件

9. 执行 Runner

10. 发布 ApplicationReadyEvent 事件


1. 启动入口

Spring Boot 应用的启动从 main 方法开始,main 方法通常位于一个带有 @SpringBootApplication 注解的类中。@SpringBootApplication 是一个组合注解,它包含了 @Configuration(标识该类为配置类,可定义 Bean 等配置)、@EnableAutoConfiguration(开启自动配置功能,依据项目依赖自动配置相关组件)和 @ComponentScan(用于扫描指定包及其子包下的组件,如 @Component@Service@Repository@Controller 等注解标注的类)。示例代码如下:

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2. SpringApplication 初始化

SpringApplication.run() 方法会创建一个 SpringApplication 实例,并调用其 run 方法。该实例的初始化过程包含以下关键步骤:

  • 推断应用类型:依据类路径上的依赖来判断应用类型,比如包含 spring-boot-starter-web 依赖则推断为 Servlet 应用,若包含相关响应式编程依赖则推断为 Reactive 应用等。
  • 设置初始化器(Initializers):通过 SpringFactoriesLoader 从 META-INF/spring.factories 文件中加载并应用 ApplicationContextInitializer。这些初始化器可在应用上下文创建前对其进行定制化配置,例如设置属性源等。
  • 设置监听器(Listeners):同样借助 SpringFactoriesLoader 加载并应用 ApplicationListener,用于监听应用启动过程中的各类事件,如环境准备完成事件、应用上下文初始化事件等,以便在不同阶段执行相应逻辑。
  • 推断主应用类:通过堆栈跟踪的方式推断出主应用类,即包含 main 方法且带有 @SpringBootApplication 注解的类。

3. 准备环境

在 run 方法中,Spring Boot 会进行应用环境(Environment)的准备工作,具

相关文章:

  • C语言 第一章 认识C语言
  • HD接口 和HDMI接口是一个意思么
  • python-leetcode-划分字母区间
  • 子组件如何通过v-model实现数据的双向绑定
  • 互联网怎样利用人性-思维导图-markdown
  • Selenium 调用模型接口实现功能测试
  • C++ Primer 成员访问运算符
  • python学习五
  • 深入理解 并查集LRUCaChe
  • CUDA编程:对线程模型的理解
  • HDFS扩缩容及数据迁移
  • 使用 LangChain 和 Milvus 构建测试知识库
  • Instagram 的隐私政策更新:用户如何应对这些变化?
  • ARM32汇编 -- align 指令说明及示例
  • wordpress按分类ID调用最新、推荐、随机内容
  • Junit框架缺点
  • 计算机毕业设计 ——jspssm506Springboot 的旧物置换网站
  • AI大模型-提示工程学习笔记20-多模态思维链提示
  • 计算机网络-双绞线制作
  • ZIP64扩展和普通ZIP文件有什么区别?
  • 央行:5月8日起7天期逆回购操作利率由此前的1.50%调整为1.40%
  • 同为“东部重要中心城市”后交出首份季报:宁杭苏表现如何?
  • 人们为何热衷谈论八卦?
  • 涉个人信息收集使用问题,15款App和16款SDK被通报
  • 长沙天心阁举办古琴音乐会:文旅向深,让游客听见城市的底蕴
  • 为什么有的人闻到烟味,会咳嗽、胸闷?别再伤害身边的人