Spring Boot 多环境配置与 Profile 实战

简介: Spring Boot通过Profile实现多环境配置,支持dev、test、prod等环境的独立配置。通过application-{profile}.yml分离配置,结合spring.profiles.active动态激活,实现一套代码适配多套环境,提升部署效率与安全性。

在实际项目开发中,我们通常需要面对多个运行环境:

  • 开发环境(dev):本地调试,连接测试数据库,开启详细日志;
  • 测试环境(test):QA 团队验证功能,模拟生产数据;
  • 生产环境(prod):线上服务,高安全、高性能、低日志级别。

如果每次切换环境都要手动修改 application.yml 中的数据库地址、端口、密钥等信息,不仅效率低下,还极易出错。

Spring Boot 提供了强大的多环境配置机制 —— Profile,让我们一套代码,多套配置,灵活切换


1. 创建多环境配置文件

Spring Boot 约定:  

所有以 application-{profile}.yml(或 .properties)命名的文件,都是特定环境的配置文件。

我们在 src/main/resources/ 目录下创建以下文件:

src/main/resources/
├── application.yml          # 主配置文件(用于激活指定环境)
├── application-dev.yml      # 开发环境
└── application-prod.yml     # 生产环境

⚠️ 注意:你原文中写的是 application-pro.yml,但行业通用命名是 prod(production 的缩写),建议统一使用 prod


2. 编写环境专属配置

application-dev.yml(开发环境)

server:
  port: 8001
logging:
  level:
    com.example: debug
url:
  orderUrl: http://localhost:9001
  userUrl: http://localhost:9002

application-prod.yml(生产环境)

server:
  port: 8002
logging:
  level:
    com.example: warn
url:
  orderUrl: https://order.api.prod.example.com
  userUrl: https://user.api.prod.example.com

🔍 可见:不同环境可独立配置端口、日志级别、服务地址、数据库连接等。


3. 在主配置文件中激活指定环境

编辑 application.yml,指定当前激活的 Profile:

spring:
  profiles:
    active: dev   # 当前使用开发环境配置

📌 启动时,Spring Boot 会:

  1. 加载 application.yml(公共配置 + 激活 profile);
  2. 自动加载 application-dev.yml
  3. 合并配置,同名属性以 profile 配置为准

4. 部署时如何切换到生产环境?

方式一:修改 application.yml(适合小型项目)

active: dev 改为:

spring:
  profiles:
    active: prod

方式二:启动时通过命令行指定(推荐!无需改代码)

# 打包后启动
java -jar myapp.jar --spring.profiles.active=prod
# 或使用环境变量
export SPRING_PROFILES_ACTIVE=prod
java -jar myapp.jar

优势:同一份 JAR 包,可在不同服务器上通过参数切换环境,真正实现“一次打包,到处运行”。


5. 验证多环境生效

步骤 1:设置 active: dev,启动项目

访问 http://localhost:8001/health

→ 应成功,因为开发端口是 8001。

步骤 2:改为 active: prod,重启

访问 http://localhost:8002/health

→ 端口变为 8002,说明生产配置已生效。

💡 你也可以在 Controller 中打印当前激活的 Profile:

@Value("${spring.profiles.active:unknown}")
private String activeProfile;
@GetMapping("/profile")
public String getActiveProfile() {
    return "当前环境:" + activeProfile;
}

6. 最佳实践建议

建议 说明
✅ 公共配置放 application.yml spring.application.name、全局日志格式
✅ 敏感信息不提交到 Git 生产密码、密钥应通过环境变量或配置中心注入
✅ 使用标准命名 dev / test / staging / prod
✅ CI/CD 中动态指定 Profile Jenkins、GitLab CI 等可通过参数控制部署环境

7. 总结

通过本节课,你已掌握 Spring Boot 多环境配置的核心能力:

  • ✅ 使用 application-{profile}.yml 分离不同环境配置;
  • ✅ 通过 spring.profiles.active 激活指定环境;
  • ✅ 支持命令行动态切换,无需重新编译;
  • ✅ 实现“开发一套代码,部署多套环境”的工程目标。

🎯 记住环境隔离是专业开发的基本素养,而 Profile 是 Spring Boot 给我们的最佳礼物


相关文章
|
12天前
|
数据采集 人工智能 安全
|
7天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
344 164
|
6天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
345 155
|
7天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
581 4
|
15天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
1019 7

热门文章

最新文章