当前位置: 首页 > news >正文

03_spring配置优先级

文章目录

    • 一、配置优先级从高到低排序
      • 1. 命令行参数(--key=value)
      • 2‌. Java系统属性(-D参数)
      • 3‌. 操作系统环境变量
      • 4. 外部配置文件(JAR包外部)
      • 5‌. JAR包内部配置文件
      • 6. Profile-specific配置
      • 7‌. @PropertySource注解
      • 8‌. 默认属性
    • 二、特殊场景说明
    • 三、最佳实践建议

Spring Boot的配置和变量加载遵循明确的优先级规则,以下是综合多个来源的详细解析:

一、配置优先级从高到低排序

1. 命令行参数(–key=value)

通过--key=value形式传递,直接覆盖其他配置(如java -jar app.jar --server.port=8081)。

2‌. Java系统属性(-D参数)

通过JVM参数设置(如java -Dserver.port=8081 -jar app.jar)。

3‌. 操作系统环境变量

通过系统变量设置(如export SERVER_PORT=8081)。

4. 外部配置文件(JAR包外部)

  • 目录优先级‌:/config/(JAR包同级) > 项目根目录 > classpath:/config/ > classpath:/
  • 文件类型优先级‌:.properties > .yml > .yaml

5‌. JAR包内部配置文件

位于src/main/resources下的application.propertiesapplication.yml

6. Profile-specific配置

application-{profile}.properties,需通过spring.profiles.active激活。

7‌. @PropertySource注解

显式加载的配置文件,优先级低于默认配置。

8‌. 默认属性

通过SpringApplication.setDefaultProperties()设置。

二、特殊场景说明

  • 微服务项目‌:bootstrap.yml优先级高于application.yml,常用于Spring Cloud配置。
  • 相同目录下的文件冲突‌:.properties会覆盖同名的.yml文件。
  • 随机值属性‌:如random.*,优先级低于环境变量但高于默认配置。

三、最佳实践建议

  • 动态调整‌:生产环境推荐使用命令行参数或环境变量覆盖静态配置。
  • 版本兼容性‌:Spring Boot 3.x以上版本严格遵循优先级规则,低版本可能存在差异。
http://www.xdnf.cn/news/228007.html

相关文章:

  • 回归分析丨基于R语言复杂数据回归与混合效应模型【多水平/分层/嵌套】技术与代码
  • 数智化招标采购系统针对供应商管理解决方案(采购如何管控供应商)
  • Qt/C++面试【速通笔记六】—Qt 中的线程同步
  • 合并两个有序数组
  • DataWorks Copilot 集成 Qwen3-235B-A22B混合推理模型,AI 效能再升级!
  • uniapp 实现时分秒 分别倒计时
  • 大数据平台与数据仓库的核心差异是什么?
  • MySQL RR (Repeatable Read) 隔离级别规则细节
  • 【计算机视觉】目标检测:深度解析Detectron2:Meta开源目标检测与图像分割框架实战指南
  • Linux Nginx网站服务【完整版】
  • 从高端制造到民生场景:天元轻量化软件的“破局”之路
  • 【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题
  • 大语言模型 06 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机配置 GPT训练基本流程概念
  • ASP.NET MVC​ 入门与提高指南六
  • 一套SaaS ERP管理系统源码,支持项目二开商用,SpringBoot+Vue+ElementUI+UniAPP
  • 11.Spring Boot 3.1.5 中使用 SpringDoc OpenAPI(替代 Swagger)生成 API 文档
  • 若依Vue + Spring Boot:前后端参数传递实践与 @RequestParam、@RequestBody、@ModelAttribute 使用详解
  • 解决vscode cmake提示检测到 #include 错误
  • 【Hive入门】Hive高级特性:事务表与ACID特性详解
  • Ubuntu 24.04 终端美化
  • 第一章 OpenCV篇-配置及基础知识-Python
  • 常用开发脚本工具推荐
  • java网络原理5
  • 【C++】数据结构 九种排序算法的实现
  • python对接马来西亚股票完整代码
  • 微前端框架选型指南
  • Go并发控制模式:基于Channel的实践与优化
  • Github 2025-04-30 C开源项目日报 Top10
  • 3dgs渲染 Nvdiffrast
  • getattr 的作用