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

springboot配置文件关系及加载顺序

1. 配置文件的作用
application.yml作用:这是项目的 默认配置文件,通常包含通用的基础配置。它适用于所有环境(如开发、测试、生产等),提供全局的默认值。application-prod.yml作用:这是一个 环境特定的配置文件,用于定义针对某种特定环境(如生产环境)的配置。文件名中的 prod 表示生产环境(Production),类似的还有 dev(开发环境)、test(测试环境)等。2. 加载顺序与优先级Spring Boot 的配置文件加载遵循一定的规则,主要基于 profiles(环境配置)的概念。以下是加载顺序和优先级的详细说明:
加载顺序application.yml:Spring Boot 会首先加载 application.yml,作为默认的全局配置。这些配置会被应用于所有环境。application-{profile}.yml:如果指定了某个 profile(比如 prod),Spring Boot 会加载对应的配置文件(如 application-prod.yml)。这些配置会覆盖 application.yml 中相同名称的配置项。优先级高优先级覆盖低优先级:具体来说,application-prod.yml 中的配置会覆盖 application.yml 中的同名配置。这种机制允许为不同环境定制化配置,而无需修改全局默认配置。3. 如何指定 Profile在 Spring Boot 中,可以通过多种方式指定当前使用的 profile:
方式 1: 在 application.yml 中指定spring:profiles:active: prod这里指定了激活的 profile 为 prod,Spring Boot 会加载 application-prod.yml。方式 2: 命令行参数启动应用时,通过命令行参数指定 profile:java -jar app.jar --spring.profiles.active=prod方式 3: 环境变量设置环境变量来指定 profile:export SPRING_PROFILES_ACTIVE=prod方式 4: JVM 参数通过 JVM 参数指定 profile:java -Dspring.profiles.active=prod -jar app.jar4. 示例分析假设我们有以下两个配置文件:
application.ymlserver:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/default_dbusername: rootpassword: rootapplication-prod.ymlserver:port: 8081spring:datasource:url: jdbc:mysql://prod-db-host:3306/prod_dbusername: prod_userpassword: prod_password运行结果如果没有指定 profile,默认使用 application.yml:server.port = 8080数据库连接信息为 default_db。如果指定了 prod profile(例如通过 --spring.profiles.active=prod):server.port = 8081(application-prod.yml 覆盖了 application.yml 的端口配置)。数据库连接信息为 prod_db(application-prod.yml 覆盖了 application.yml 的数据库配置)。5. 配置文件的合并逻辑Spring Boot 在加载配置文件时,会将多个配置文件的内容进行合并,具体规则如下:基础配置 (application.yml):先加载 application.yml,作为全局默认配置。环境特定配置 (application-{profile}.yml):根据激活的 profile,加载对应的配置文件。如果某个配置项在 application-{profile}.yml 中存在,则覆盖 application.yml 中的同名配置项。未覆盖的配置项:如果某个配置项只存在于 application.yml 中,而未在 application-{profile}.yml 中定义,则保留 application.yml 的值。6. 总结application.yml:提供全局默认配置,适用于所有环境。优先级较低,容易被环境特定配置覆盖。application-prod.yml:提供针对生产环境的特定配置。优先级较高,会覆盖 application.yml 中的同名配置项。加载顺序:先加载 application.yml,再根据激活的 profile 加载对应的 application-{profile}.yml。推荐实践:将通用配置放在 application.yml 中。将环境特定的配置放在 application-{profile}.yml 中,避免硬编码敏感信息或环境相关参数。
http://www.gsyq.cn/news/11631.html

相关文章:

  • 简单博弈
  • PolarFire SOC Auto Update 和 IAP 文档阅读一 AUTO recovery
  • 09_五大IO模型
  • wsl Ubuntu 使用cmake
  • 做题笔记16
  • 深入解析:实验室:将 XSS 反映到 HTML 上下文中,大多数标记和属性都被阻止
  • 深入解析:【Qt】信号和槽
  • ROS2之消息接口
  • 【IEEE出版】第五届网络通信与信息安全国际学术会议(ICNCIS 2025)
  • 第16章 Day19 Charles安装和使用---微信小程序逆向
  • DBLINK的创建和使用(总结)
  • Could not resolve host: mirrorlist.centos.org
  • 华为,让金融智能体月映千江 - 指南
  • 课上测试:C编程工具测试(AI)
  • 标题。
  • 中断的基本概念
  • 修复gradle8使用Transform第一个构建中断第二次构建失败的问题:java.io.IOException: Unable to delete directory xxxx\build
  • 记录:git、.${index}. 滚动条
  • CRMEB标准版PHP移动订单功能深度解析:多端同步方案
  • Tenable Nessus 10.10 (macOS, Linux, Windows) - 漏洞评估解决方案
  • 超快轻量级离线翻译服务器MTranServer在腾讯云轻量应用服务器上的全流程部署指南 - 实践
  • 实用指南:【Cesium 开发实战教程】第六篇:三维模型高级交互:点击查询、材质修改与动画控制
  • MX 练石 2025 NOIP #9
  • OSS cp(下载文件)
  • 有范同城旅游广告小程序系统:赋能旅游行业数字化运营新生态
  • 完整教程:第八篇:GIL全局解释器锁:原理、影响与应对策略
  • 下载并安装ossutil
  • PDF论文文字公式提取,翻译与对照代码(自用)
  • 华为鸿蒙 ArkTS 实战:基于 RelationalStore 的 SQLite 实现本地数据持久化 - 实践
  • 从 0 到 1 精通 SkyWalking:分布式系统的 “透视镜“ 技巧全解析