SpringBoot加载配置文件的优先级
创作时间:
作者:
@小白创作中心
SpringBoot加载配置文件的优先级
引用
CSDN
1.
https://m.blog.csdn.net/qq_41684621/article/details/146177140
在 SpringBoot 应用中,配置文件的加载顺序(优先级)决定了不同来源的配置属性如何覆盖彼此,但是,在实践中,也会经常遇到。下面文章将分析 SpringBoot 配置文件加载的优先级,从高到低排列。
通过命令行(Command-line arguments)传递的参数具有最高优先级。
如下示例,在启动应用时传递命令行参数
--server.port=8081:java -jar myapp.jar --server.port=8081Java 系统属性
在启动应用时通过
-D选项设置的系统属性。如下示例,在启动应用时设置
-Dserver.port=8081系统属性:
java -Dserver.port=8081 -jar myapp.jar
- 操作系统环境变量
- 设置在操作系统级别的环境变量。例如,
SERVER_PORT=8081。
- random 配置属性源(Random Configuration Property Sources):
- 包括
random.*属性,用于生成随机数或其他随机相关的配置。
- application.{profile}.properties 或 application.{profile}.yml 文件
- 基于当前激活的 Spring Profile 加载的配置文件。例如,如果激活了
dev环境,则加载application-dev.properties。
- application.properties 或 application.yml 文件
- 默认的配置文件,通常位于
src/main/resources目录下。
- @PropertySource 注解指定的属性文件
- 通过在配置类上使用
@PropertySource注解加载的自定义属性文件。
- 默认属性
- 使用
SpringApplication.setDefaultProperties设定的默认属性。
配置文件的搜索顺序
- Spring Boot 在不同位置搜索
application.properties或application.yml文件,以下是搜索的顺序,从高到低优先级:
外部位置(当前目录、上级目录等):
file:./config/file:./file:../config/file:../
- 如果你在应用程序的当前目录或其上级目录中有配置文件,这些文件的优先级高于类路径下的配置文件。
类路径下的
/config子目录:类路径根目录:
配置优先级示例
假设存在以下配置
application-dev.properties在类路径下的config目录中设置server.port=8081- 外部
application.properties文件设置server.port=8082 - 命令行参数传递
--server.port=8083
在激活 dev Profile 的情况下,最终 server.port 的值将是 8083。这是因为命令行参数的优先级最高,覆盖了其他所有配置来源。
激活 Profile
可以通过以下方式激活特定的 Spring Profile:
java -jar myapp.jar --spring.profiles.active=dev
环境变量:
设置SPRING_PROFILES_ACTIVE=dev配置文件:
在application.properties中设置spring.profiles.active=dev
属性覆盖规则
同一属性名在多个来源中定义时,优先级高的来源会覆盖低的。例如:
application.properties中定义app.name=MyApp- 外部
application.properties中定义app.name=ExternalApp
若外部位置的配置文件优先级更高,则最终 app.name 为 ExternalApp。
总结
Spring Boot 的配置文件加载优先级有助于:
- 正确组织和管理配置文件 ,确保不同环境下的配置正确应用。
- 避免意外覆盖 ,通过明确的优先级控制哪些配置生效。
- 优化配置管理流程 ,尤其是在复杂项目或多环境部署时。
本文原文来自CSDN
热门推荐
缺小指无名指中指工伤伤残等级评定应为多少级
未婚生育孩子的抚养费用计算方法
警方如何审查案件进度:从侦查到评估的全流程解析
遇见丽江古城
行业观察 | 新能源汽车渗透率再破50%,中国电车将油车逼入墙角
逍遥自在的庄子——《庄子》散读
全面指南:西沙群岛自由行深度游攻略,涵盖交通、住宿、美食与探险全攻略
毒液、死侍等角色为啥叫反英雄?
痛风和高尿酸血症需要如何调整生活方式?
2024豆瓣评分最高英美新剧TOP10,你追了几部?
提醒!这5个特殊日期要记住,不然可能被注销驾驶证!
如何选择合适的防护手套 :保护您的安全与工作效率
牙痛药有副作用吗?长期服用需谨慎
一段超现实主义的女性叙事:在上海邂逅利奥诺拉·卡林顿
一文读懂梅纳反应:两个方法找回失去的料理香气
陈百强与何超琼的凄美之爱:你微笑送我出嫁,我不惧世俗为你扶灵
“情人节”大比拼!哪个才是真正的中国情人节?
益寿井:一口藏在“水下桃源”的百年古井
4种常见的脚气类型及正确用药指南
澳门大三巴哪吒庙:澳门现存两座哪吒庙之一
月季花修剪技巧:让花朵绽放更灿烂
100种分析思维模型之:二阶思维
二阶思维:聪明人的超常发挥
C语言代码优化:如何腾出更多空间?
看了那么多潇洒的李白,今天还你一个历史上真实的李白
春季皮肤干痒是怎么回事?如何预防和缓解
浅谈DC/DC转换器失效分析技术
快速掌握一项高价值技能的实用方法
保险车型风险分级制度待建立,将给车险带来哪些影响?
如何全面分析一个人