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

Spring Boot 全局配置文件优先级

好的,Spring Boot的全局配置文件优先级是一个非常重要的概念,它决定了在不同位置的同名配置属性以哪个为准。


Spring Boot 全局配置文件优先级核心知识点 📌

  • 文件格式优先级: 在同一目录下,如果同时存在 application.propertiesapplication.yml 文件,.properties 文件的优先级高于 .yml 文件。这意味着,如果两个文件中定义了相同的属性,将以 .properties 文件中的值为准。

  • 文件位置加载顺序 (由高到低): Spring Boot会从多个位置加载 application.propertiesapplication.yml 文件,优先级顺序如下(列表顶部的优先级最高):

    1. 命令行指定的 spring.config.location: 可以在启动应用时通过命令行参数直接指定配置文件的位置,这个位置的优先级最高。
    2. 项目根目录下的 /config 子目录: 例如,如果你的 JAR 包在 /app/my-app.jar,那么 /app/config/application.properties 的优先级很高。
    3. 项目根目录: JAR 包所在的目录。例如,/app/application.properties
    4. 类路径下的 /config: 项目 src/main/resources/config/ 目录下的配置文件。
    5. 类路径根目录: 项目 src/main/resources/ 目录下的配置文件。这是项目中最常用的位置。
  • Profile特定配置文件的优先级:

    • 无论是哪种位置,特定profile的配置文件 (application-{profile}.properties) 的优先级总是高于不带profile的默认配置文件 (application.properties)。
    • 例如,如果同时激活了 dev profile,并且在 src/main/resources/ 目录下同时存在 application.propertiesapplication-dev.properties,那么 application-dev.properties 中的属性会覆盖 application.properties 中的同名属性。
  • 外部配置的整体优先级 (更广范围): 配置文件只是Spring Boot外部化配置优先级中的一部分。完整的优先级顺序(部分,从高到低)大致如下:

    1. 命令行参数: java -jar my-app.jar --server.port=9090
    2. ServletConfig / ServletContext 初始化参数
    3. JNDI 属性
    4. Java 系统属性 (System.getProperties())
    5. 操作系统环境变量
    6. Profile特定的应用配置文件 (如 application-{profile}.properties)
    7. 普通的应用配置文件 (如 application.properties)
    8. @PropertySource 注解指定的配置文件
    9. 默认属性 (通过 SpringApplication.setDefaultProperties 设置)

核心要点总结:

  • .properties 优先于 .yml (在同一级别)。
  • 外部配置优先于内部配置 (JAR包外部的配置文件优先于内部的)。
  • Profile特定配置优先于通用配置
  • 命令行参数和环境变量可以覆盖所有配置文件中的属性,这使得在不同环境中部署应用变得非常灵活。

相关文章:

  • “人单酬“理念:财税行业的自我驱动革命
  • CCPC dongbei 2025 F
  • 神经网络-Day42
  • 针对 Harmony-Cordova 性能优化,涵盖原生插件开发、线程管理和资源加载等关键场景
  • Codeforces Round 1028 (Div. 2)(ABC)
  • MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
  • 【MFC】初识MFC
  • Redis缓存落地总结
  • 2025年计算机领域年度主题:融合创新与技术突破
  • 如何使用 Docker 部署grafana和loki收集vllm日志?
  • Flask文件处理全攻略:安全上传下载与异常处理实战
  • 使用Docker-NVIDIA-GPU开发配置:解决 Docker NVIDIA 运行时错误方法
  • 基于微信小程序的scratch学习系统
  • Redis分布式锁实现指南
  • 软考-数据库系统工程师-程序设计语言知识要点
  • 【Go】2、Go语言实战
  • Rust 学习笔记:自定义构建和发布配置
  • AUTOSAR图解==>AUTOSAR_SWS_DIODriver
  • 【渲染】拆解三国:谋定天下场景渲染技术
  • linux 后记
  • 今日头条做免费网站/成都网站优化公司
  • 网站的后台怎么做/成人职业技能培训班
  • 深圳企业宣传片制作/长沙快速排名优化
  • 常州商城网站制作公司/app拉新平台哪个好佣金高
  • 如何做自己的电影网站/河南网站建设定制
  • 南昌做网站建设公司/免费域名邮箱