Spring Boot 应用的配置文件路径顺序和优先级别是根据 ResourceLoader
的实现类加载资源文件的顺序来决定的。以下是其详细攻略:
- Spring Boot 系统关键配置文件的默认路径为
classpath:/、classpath:/config/ 和 file:./、file:./config/
,其中classpath:/
表示从类路径下加载,file:./
表示从启动目录下加载。具体可以通过在application.properties
中设置以下属性进行配置修改:
properties
# 修改 resource 路径为 /config/ 目录下面
spring.config.name=myapplication
spring.config.location=classpath:/config/
- 如果需要加载外部文件的话,可以借助以下方式加载:
java
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.setDefaultProperties(Collections.singletonMap("my.config.file", "/Users/zzz/config/application.properties"));
app.run(args);
}
上面代码中,我们使用 setDefaultProperties
方法设置了一个 my.config.file
属性,该属性指定了外部的配置文件路径。在运行 Spring Boot 应用时,应用会优先读取外部的配置文件内容。
- 上面两种方式是默认情况下 Spring Boot 应用读取配置文件的路径和优先级别,如果要改变默认的路径或者增加默认的搜索路径,需要使用配置文件来进行这种配置。可以在
application.properties
文件中进行更改:
properties
# 设置多个外部配置文件,优先级别从最低到最高
spring.config.additional-location=file:/etc/zzz/,classpath:/config/
上面代码中,我们通过使用 spring.config.additional-location
配置属性,可以设置多个外部配置文件的路径,Spring Boot 应用会按照从左到右的顺序读取配置文件的内容,/etc/zzz/
目录的优先级别低于 classpath:/config/
目录。
- Spring Boot 2.4 版本的新特性,对 DevTool 的支持。在开发的过程中,我们可能需要使用不同的 Profile 来配置不同环境下的配置信息。我们只需要在 DevTool 的文档中添加
application-<profile>.yml
(如:application-dev.yml
)即可在 DevTool 中使用对应环境的配置文件。
properties
# 开启 DEV 环境自动重载配置
spring.devtools.restart.enabled:true
# 从文件中排除静态文件的匹配表达式
# 如果不需要加入到的这里的列表可以自行修改
spring.devtools.restart.exclude=static/**,public/**
通过上述方法,可以更灵活地配置和加载 Spring Boot 应用的配置文件,支持外部文件的加载,以及不同 Profile 的配置文件的使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot如何查找配置文件路径的顺序和其优先级别 - Python技术站