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

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)的准备工作,具


http://www.kler.cn/a/562896.html

相关文章:

  • MySQL的存储引擎
  • 鸿蒙NEXT开发-视频播放绘图能力
  • 每天练打字15:时隔多日后回归,目前赛文速度110.97
  • 【漫话机器学习系列】105.学习速率(Learning Rate)
  • ‌Selenium三大等待方式详解
  • 鸿蒙5.0实战案例:基于RichEditor的评论编辑
  • 特斯拉 FSD 算法深度剖析:软件层面全解读
  • 登录逻辑结合redis
  • 【Linux】vim 设置
  • Selenium 与 Coze 集成
  • 【AI+智造】基于DeepSeek的船舶海工设备多维度数据分析技术方案——以南通船舶制造企业为例
  • Element Plus: el-card的内容滚动问题
  • 钉钉MAKE AI生态大会思考
  • 一文讲解Redis中热点Key的重建、可能会发生的问题及解决方案
  • JVM 简单内存结构及例子
  • 前端(vue)学习笔记(CLASS 2):进阶
  • Rk3568驱动开发_点亮led灯(手动挡)_5
  • 认证与授权#1#Token和Cookie验证方式对比
  • 学习Java数组操作:从基础到高级技巧详解
  • 【算法工程】大模型局限性新发现之解决能连github但无法clone项目的问题