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

【Java后端】SpringBoot配置多个环境(开发、测试、生产)

Spring Boot 中配置多个环境(开发、测试、生产)通常用 配置文件分环境管理 + 启动参数切换 的方式来实现。下面一个完整的实践指南:


🔹 1. 使用多配置文件管理环境

Spring Boot 默认支持 application-{profile}.propertiesapplication-{profile}.yml 文件。
常见方式是创建以下配置文件:

src/main/resources/├── application.yml              # 通用配置(所有环境共享)├── application-dev.yml          # 开发环境配置├── application-test.yml         # 测试环境配置└── application-prod.yml         # 生产环境配置

示例:

application.yml(通用配置)

spring:application:name: myappprofiles:active: dev   # 默认激活 dev 环境(可以通过启动参数覆盖)

application-dev.yml(开发环境)

server:port: 8080spring:datasource:url: jdbc:mysql://localhost:3306/dev_dbusername: dev_userpassword: dev_pwd

application-prod.yml(生产环境)

server:port: 8081spring:datasource:url: jdbc:mysql://prod-server:3306/prod_dbusername: prod_userpassword: prod_pwd

🔹 2. 启动时指定环境

方法 1:在 application.yml 设置

spring:profiles:active: dev   # 或 test / prod

方法 2:命令行参数(推荐,灵活)

# 启动时指定 dev 环境
java -jar myapp.jar --spring.profiles.active=dev# 启动时指定 prod 环境
java -jar myapp.jar --spring.profiles.active=prod

方法 3:环境变量

export SPRING_PROFILES_ACTIVE=prod
java -jar myapp.jar

🔹 3. 使用 Profile 注解(可选)

如果你需要在代码里针对不同环境执行逻辑,可以用 @Profile 注解:

@Service
@Profile("dev")
public class DevDataService implements DataService {@Overridepublic String getData() {return "开发环境数据";}
}@Service
@Profile("prod")
public class ProdDataService implements DataService {@Overridepublic String getData() {return "生产环境数据";}
}

这样在 dev 环境只会加载 DevDataService,而生产环境只会加载 ProdDataService


🔹 4. 高级用法:组合 Profile

Spring Boot 支持 组合 Profile
例如在 application.yml 里:

spring:profiles:group:dev: [common, mysql-dev]prod: [common, mysql-prod]

这样当 spring.profiles.active=prod 时,会自动加载 application-common.ymlapplication-mysql-prod.yml


总结

  • application-{profile}.yml 管理不同环境的配置。
  • 启动时用 --spring.profiles.active=xxx 指定环境。
  • 特殊逻辑可以用 @Profile 注解隔离。
  • 生产推荐用 命令行参数/环境变量 指定,而不是写死在配置文件。

http://www.xdnf.cn/news/19410.html

相关文章:

  • Python|Pyppeteer解决无法启动Chromium浏览器的问题(35)
  • 云网络(参考自腾讯云计算工程师认证)
  • MySQL服务启动命令手册(Linux+Windows+macOS)(下)
  • CAD2024安装包下载与安装详细教程
  • Marco:阿里国际推出的商用翻译大模型,支持15种语言,效果超越谷歌、GPT-4
  • Overleaf中文显示
  • AI 相关内容:Agent、MCP、Prompt 与 RAG 入门指南
  • tkinter布局
  • 鸿蒙应用开发:开机自启并自检网络状态
  • docker,数据卷
  • Flink部署实战:从入门到优化
  • Linux基本工具(yum、vim、gcc、Makefile、git、gdb)
  • 【模型训练篇】VeRL分布式基础 - 框架Ray
  • 解决 uni-app 中大数据列表的静默UI渲染失败问题
  • Q1 Top IF 18.7 | 基于泛基因组揭示植物NLR进化
  • C语言强化训练(2)
  • 生物学自然主义:心灵哲学中的生物性探索
  • 编程与数学 03-004 数据库系统概论 11_数据库的维护
  • 线阵相机和镜头选型案例介绍
  • 雪花算法是什么,时钟回拨问题怎么解决?
  • 第2章 MySQL的调控按钮-启动选项和系统变量
  • React 状态管理演进之路:从 Dva 到现代架构
  • YOLO 目标检测:YOLOv2基本框架、多尺度训练、锚框、维度聚类、位置预测、passthrough
  • 房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)
  • 秋招 AI 方向 —— 华为机考
  • Spring MVC 九大组件源码深度剖析(六):HandlerExceptionResolver - 异常处理的艺术
  • 雪花算法实现分布式环境下的高效动态ID生成
  • 20.28 《4bit量化模型预处理揭秘:如何节省75%显存高效微调LLM?》
  • leetcode_74 搜索二维矩阵
  • 通信原理(006)——分贝(dB)超级详细