application.yml 系列配置文件作用与区别

这三个是 SpringBoot 项目的核心配置文件 ,专门用来管理不同运行环境的配置(开发 / 测试 / 生产),是企业级项目最标准的配置方案。


一、核心作用

1. application.yml

  • 主配置文件 / 公共配置文件
  • 存放所有环境都通用的配置
  • 优先级最低,会被环境专属配置覆盖
  • 示例:项目名称、通用端口、公共依赖配置

2. application-dev.yml

  • 开发环境专属配置
  • dev = development
  • 存放本地开发用的配置
  • 示例:本地数据库、本地 Redis、调试日志、热部署

3. application-prod.yml

  • 生产环境专属配置
  • prod = production
  • 存放线上服务器用的配置
  • 示例:线上数据库、线上 Redis、关闭调试、生产日志级别

二、关键区别(最核心)

表格

文件 定位 优先级 使用场景
application.yml 公共基础配置 最低 所有环境通用
application-dev.yml 开发环境配置 中 本地写代码、调试
application-prod.yml 生产环境配置 中 服务器上线运行

最重要规则:

同名配置项,环境专属文件会覆盖主配置文件比如:

  • application.yml 写端口:8080
  • application-dev.yml 写端口:8081→ 启动 dev 环境时,最终端口是 8081

三、如何切换环境?

在 application.yml 中指定当前使用哪个环境:

java 复制代码
# 公共配置
spring:
  profiles:
    # 激活 dev 环境 → 加载 application-dev.yml
    active: dev  
    # 激活 prod 环境 → 加载 application-prod.yml
    # active: prod

四、完整示例

1. application.yml(公共)

java 复制代码
server:
  port: 8080  # 默认端口,会被覆盖

spring:
  application:
    name: my-demo  # 所有环境通用
  profiles:
    active: dev  # 切换环境只改这里

2. application-dev.yml(开发)

java 复制代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test  # 本地库
    username: root
    password: root

logging:
  level: debug  # 开发调试用

3. application-prod.yml(生产)

java 复制代码
spring:
  datasource:
    url: jdbc:mysql://192.168.1.100:3306/prod  # 线上库
    username: prod_user
    password: xxxxxx

logging:
  level: info  # 生产只打重要日志

五、为什么要分这么多文件?

  1. 环境隔离:开发用本地库,生产用线上库,互不干扰
  2. 安全:线上密码不暴露在开发配置中
  3. 便捷 :打包上线时,只需要切换 active: prod
  4. 规范:企业级 SpringBoot 项目标准结构

总结

  1. application.yml:放通用配置
  2. application-dev.yml:本地开发用
  3. application-prod.yml:线上部署用
  4. 激活方式 :在主配置里写 spring.profiles.active=环境名
  5. 优先级:专属配置 > 公共配置
相关推荐
悟天特斯10 分钟前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网
70后写java的老码农20 分钟前
Spring Boot 3.x + ShardingSphere 5.x + MyBatis-Plus 3.x:订单分库分表实战(含两个踩坑记录)
java
霸道流氓气质24 分钟前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
斯维赤30 分钟前
OCR到底是接入第三方API 还是自己封装?
java·ocr
码智社1 小时前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把1 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
silvamux_1 小时前
微头条爆款体平台适配实测:把交付要求变成可计算的指标
java·线性代数·算法·决策树·矩阵
论文复现现场1 小时前
DeepSeek V4.1 Flash 和 V4 Pro 有什么区别?API 价格、性能与迁移建议
java·服务器·人工智能·python·大模型api·deepseek·deepseek v4.1
郭小李2 小时前
转发与重定向
java·服务器·数据库
你看我名字2 小时前
数眼智能 Search + Reader 实战:联网问答怎样避免“搜到了,却引用错了”
android·java·开发语言