前言 在Spring Boot项目启动后,代码加载的先后顺序如下:
-
加载外部配置文件: Spring Boot会首先加载应用程序的外部配置文件,例如
application.properties
或application.yml
文件。这些文件中的配置会被加载并应用于整个应用程序。 -
扫描并加载Bean定义: Spring Boot会扫描指定的包及其子包,查找带有特定注解(如
@Component
、@Controller
、@Service
等)的类,并根据这些类的定义创建相应的Bean实例。这一过程会生成应用程序的Bean定义,包括依赖注入的配置信息。 -
执行Spring Boot的自动配置: Spring Boot提供了自动配置机制,它会根据应用程序的依赖和配置情况,自动配置各种常见的功能模块,例如数据库连接、Web服务器等。自动配置是根据一系列约定和条件触发的,它简化了应用程序的配置工作。
-
执行应用程序的启动回调: 在所有的Bean都被创建和初始化之后,Spring Boot会执行一些启动回调方法。这些回调方法可以在应用程序中实现
CommandLineRunner
或ApplicationRunner
接口,并用于执行特定的初始化逻辑或任务。 -
启动内嵌的Web服务器: 如果应用程序是一个Web应用,Spring Boot会在加载完所有的配置和Bean定义之后,启动内嵌的Web服务器(如Tomcat、Jetty等),以便处理HTTP请求和响应。
-
应用程序启动完成: 一旦内嵌的Web服务器启动成功,应用程序就完成了启动过程,可以响应来自客户端的请求。
需要注意的是,以上是一个典型的Spring Boot应用程序启动的顺序,但具体的加载顺序也可能受到配置和依赖的影响,例如使用@Order
注解指定加载顺序,或根据条件选择性加载某些组件。因此,在实际项目中,可能会有一些差异和定制化的配置。
1-1 Spring Boot加载外部配置文件的顺序以及详解
支持多种外部配置文件格式,例如.properties、.yaml、.yml等。以下是加载外部配置文件的详细解释:
-
默认配置文件位置:
- Spring Boot默认会加载以下位置的配置文件(按优先级降序):
- 当前目录下的
config/
文件夹。 - 当前目录。
- classpath下的
config/
文件夹。 - classpath根目录。
- 当前目录下的
- Spring Boot默认会加载以下位置的配置文件(按优先级降序):
-
配置文件命名:
- 默认情况下,Spring Boot会加载
application.properties
或application.yml
作为主配置文件。 - 可以使用
spring.config.name
和spri
- 默认情况下,Spring Boot会加载