Spring Boot启动流程可以概括为以下几个步骤:
- 创建SpringApplication对象 :
-
在主启动类中,通过
SpringApplication.run(Application.class, args)
方法启动应用。 -
SpringApplication
对象负责整个应用的启动和管理。
- 推断应用类型 :
- 根据classpath中的
META-INF/spring.factories
文件中的配置,Spring Boot会判断应用是普通的Spring应用还是Web应用(Servlet或Reactive类型)。
- 加载初始化和监听器 :
-
从
spring.factories
文件中加载ApplicationContextInitializer
和ApplicationListener
的实现类。 -
这些组件用于在应用上下文创建前后进行自定义配置和事件监听。
- 准备环境 :
- 设置系统属性和用户配置的属性,以及Maven变量等。
- 创建应用上下文 :
- 根据应用类型创建合适的
ApplicationContext
实例,例如AnnotationConfigApplicationContext
或AnnotationConfigServletWebServerApplicationContext
。
- 准备上下文环境 :
- 执行实现了
ApplicationContextInitializer
接口的类的初始化方法。
- 刷新上下文 :
- 自动装配和启动嵌入式Web服务器(如Tomcat),并进行必要的配置。
- 后置处理 :
-
afterRefresh
方法在上下文刷新之后执行,通常为空方法。
- 启动监听器 :
- 获取并启用监听器
ApplicationListener
,并发布应用启动事件SpringApplicationRunListener
。
- 执行main方法入口 :
- 一切从包含
main
方法的类开始,该类通常使用@SpringBootApplication
注解标记。
以上步骤概述了Spring Boot应用的启动流程。每个步骤都可能涉及更详细的内部操作,但以上给出的是主要的流程节点