springboot启动流程

Spring Boot启动流程可以概括为以下几个步骤:

  1. 创建SpringApplication对象
  • 在主启动类中,通过SpringApplication.run(Application.class, args)方法启动应用。

  • SpringApplication对象负责整个应用的启动和管理。

  1. 推断应用类型
  • 根据classpath中的META-INF/spring.factories文件中的配置,Spring Boot会判断应用是普通的Spring应用还是Web应用(Servlet或Reactive类型)。
  1. 加载初始化和监听器
  • spring.factories文件中加载ApplicationContextInitializerApplicationListener的实现类。

  • 这些组件用于在应用上下文创建前后进行自定义配置和事件监听。

  1. 准备环境
  • 设置系统属性和用户配置的属性,以及Maven变量等。
  1. 创建应用上下文
  • 根据应用类型创建合适的ApplicationContext实例,例如AnnotationConfigApplicationContextAnnotationConfigServletWebServerApplicationContext
  1. 准备上下文环境
  • 执行实现了ApplicationContextInitializer接口的类的初始化方法。
  1. 刷新上下文
  • 自动装配和启动嵌入式Web服务器(如Tomcat),并进行必要的配置。
  1. 后置处理
  • afterRefresh方法在上下文刷新之后执行,通常为空方法。
  1. 启动监听器
  • 获取并启用监听器ApplicationListener,并发布应用启动事件SpringApplicationRunListener
  1. 执行main方法入口
  • 一切从包含main方法的类开始,该类通常使用@SpringBootApplication注解标记。

以上步骤概述了Spring Boot应用的启动流程。每个步骤都可能涉及更详细的内部操作,但以上给出的是主要的流程节点

Top