Spring Boot启动过程?

[复制链接]
发表于 2025-10-24 19:55:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
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 等注解标注的类)。示例代码如下:
  1. @SpringBootApplication
  2. public class MyApplication {
  3.     public static void main(String[] args) {
  4.         SpringApplication.run(MyApplication.class, args);
  5.     }
  6. }
复制代码
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)的预备

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表