每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法,
在该方法中通过执行SpringApplication.run()即可启动整个Spring Boot程序。
问题:那么SpringApplication.run()方法到底是如何做到启动Spring Boot项目的呢?
下面我们查看run()方法内部的源码,核心代码具体如下
从源码中可以看出启动分成了 初始化和启动两部分
1. SpringApplication实例的初始化
标红的部分源码主要是利用
SpringFactoriesLoader从META-INF/spring.factories类路径下的META-INF下的spring.factores文件中
获取所有可用的应用初始化器类ApplicationContextInitializer以及ApplicationListener
2. 项目的初始化启动