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 给我们的最佳礼物


相关文章
|
Java 应用服务中间件 Maven
解析Spring Boot中的Profile:配置文件与代码的双重掌控
解析Spring Boot中的Profile:配置文件与代码的双重掌控
|
XML Java Maven
springboot-多环境配置文件
本文介绍了如何创建开发和生产环境的配置文件,并在IDEA和Maven中进行配置。开发环境中,通过设置profile为`dev`来指定配置文件;生产环境中,使用Maven命令参数`-Pprod`打包并指定配置文件。公共配置可放在`application.yml`中统一管理。日志配置需确保`logback-spring.xml`中的profile正确,以保证日志正常输出。
1114 4
springboot-多环境配置文件
|
Java Linux Maven
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
SpringBoot多环境的yml或properties配置,生产环境和开发环境分离(超详细)
1087 0
|
1月前
|
存储 缓存 应用服务中间件
手把手教你 Nexus 配置 Docker 镜像源|内网提速超简单
在团队开发和内网部署场景中,反复从公网拉取Docker镜像不仅耗时耗流量,还容易受网络波动影响效率。Nexus私服+轩辕镜像的组合,既能实现内网镜像缓存复用,又能借助稳定的镜像源解决拉取慢、失败的问题,堪称内网镜像管理的最优解。
489 5
手把手教你 Nexus 配置 Docker 镜像源|内网提速超简单
|
4月前
|
XML Java 数据格式
Spring @Configuration 注解详解:用 Java 代码替代 XML 配置
`@Configuration` 是 Spring 实现 Java 配置的核心注解,替代传统 XML,通过 `@Bean` 注册 Bean,结合 `@Import`、`@ComponentScan` 等实现类型安全、可维护的配置方式,推动 Spring 应用现代化。
|
2月前
|
安全 Java API
Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南
Spring Boot 4.0于2025年11月发布,基于Spring Framework 7.0,实现模块化(47个轻量自动配置)、JSpecify空安全校验、原生API版本控制等重大升级。镜像减19%、启动快33%,迁移平滑,3.5.x支持至2026年11月。(239字)
3514 2
|
3月前
|
前端开发 Java Nacos
application.yml和bootstrap.yml这两个配置文件有什么区别?
`bootstrap.yml` 与 `application.yml` 是 Spring Boot/Cloud 项目中的两类配置文件。前者用于应用启动前加载,主要配置远程配置中心(如 Nacos)、加密等关键信息,优先级高;后者是默认主配置,用于常规配置如端口、数据库等。自 Spring Boot 2.4+ 起,默认不再启用 `bootstrap` 机制,推荐使用 `spring.config.import` 在 `application.yml` 中统一导入配置,以简化流程、降低复杂度。纯 Spring Boot 应用不加载 `bootstrap.yml`。
634 0
|
4月前
|
监控 前端开发 Java
Spring Boot 统一异常处理与全局响应增强
本文介绍如何在Spring Boot中实现全局异常处理,通过`@RestControllerAdvice`和自定义`BusinessException`统一拦截异常,结合`JsonResult`标准化响应格式,避免信息泄露,提升前后端协作效率与系统健壮性。
|
安全 Java 测试技术
详解Spring Profiles:在Spring Boot中实现环境配置管理
详解Spring Profiles:在Spring Boot中实现环境配置管理
1694 10
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
637 0

热门文章

最新文章

下一篇
开通oss服务