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=8081
Java 系统属性
在启动应用时通过
-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
热门推荐
前端低代码框架怎么做
如何提高团队的维度能力
大模型推荐系统如何高效预训练和推理
雅思catti含金量高吗?
冻干柠檬片和新鲜柠檬哪个更好?全面对比解析
超越屏幕的观影体验背后,沉浸式影院究竟蕴含了哪些前沿科技?
保隆科技揭秘:新能源汽车电池热管理,液冷直冷技术引领未来?
传承雷锋精神 共护长江安澜
信披违规遭立案 江苏吴中8.8亿元封死跌停板!超6万股民“踩坑”
港股爆发!小米股价再创新高
JS循环往数组里加元素的多种方法
海外仓的法律法规风险
考研调剂黄金12小时内必做事项:在职研考生必看!
轻度缺氧与脑损伤:揭开迷雾,科学预防
s32典韦最强出装与铭文搭配有哪些?如何选择最优配置?
进看守所37天的流程是什么
血压计选购指南:从选购要点到产品推荐
银行账户的每日取款限额是多少?
蒜味最怕三个东西
药物性胰腺炎是咋回事?
贷款买车合算吗?帮你算算几种贷款方案的实际利率
小岛的四海对话:嵊泗列岛与长山列岛的绿色发展之路
《鸟之诗》:ACG文化的"国歌"传奇
鲜嫩二月韭 潮菜新做法
粞糍粿:浓郁的韭菜香气惹人爱
设备维修资料管理指南:类型、作用与发展趋势
为什么说牙齿矫正可以改变下巴后缩?
“下巴后缩”引热议!咋回事?该咋治?(附自测方法)
带娃出行攻略早知道
如何打开系统设备管理器