Spring Boot的一个重要特性就是它的自动配置,这一特性在很大程度上依赖于名称为application的配置文件。本文将详细介绍在Spring Boot中,这些配置文件的加载顺序以及每份文件的应用范围。
文章目录
- 配置文件的种类
- 配置文件的加载顺序
- 配置文件的环境切换
配置文件的种类
在Spring Boot中,我们主要使用两种类型的配置文件:
- application.properties
- application.yml
这两种文件都用于定义项目的配置参数,只是书写格式不同。其中,application.properties采用“键=值”的格式,而application.yml采用了YAML(YAML Ain’t Markup Language)语言的格式,设置更为清晰和明了。
配置文件的加载顺序
当项目启动时,Spring Boot会按照一定的顺序去加载这些配置文件。以下是这些配置文件的默认加载顺序:
- 在当前目录下的/config子目录的application配置文件
- 在当前目录下的application配置文件
- 在类路径(classpath)下的/config子目录的application配置文件
- 在类路径(classpath)下的application配置文件
其中,列表中序号越小的配置文件优先级越高。也就是说,如果在不同的application配置文件中定义了相同的属性,那么,优先级更高的配置文件中定义的值会覆盖优先级较低的配置文件中定义的值。
配置文件的环境切换
除了主要的application配置文件之外,我们还可以为每个环境提供专门的配置文件。这些环境特定的配置文件的名称格式为application-{profile}.properties或application-{profile}.yml,其中的{profile}表示特定的环境。例如,我们可以为开发环境定义一个application-dev.properties文件,为生产环境定义一个application-prod.properties文件。
与普通的配置文件一样,环境特定的配置文件也有一定的加载顺序,但它们的加载时机是在对应的application配置文件加载之后。也就是说,如果环境特定的配置文件中定义了与application配置文件相同的属性,那么环境特定的配置文件中的值将会覆盖application配置文件中的值。
参考资源:
- Config file processing in Spring Boot 2.4
- Order of Configuration in SpringBoot
- Spring Boot Externalized Configuration