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

【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://c4IZVOhr.tdfyj.cn
http://FQCc6dnR.tdfyj.cn
http://n4Ig0mcn.tdfyj.cn
http://Boav5vIP.tdfyj.cn
http://Cj3LU05R.tdfyj.cn
http://Vh8fNNMJ.tdfyj.cn
http://q43uKqE4.tdfyj.cn
http://1uqCkjlR.tdfyj.cn
http://4ETTLZ1H.tdfyj.cn
http://RvA94YU7.tdfyj.cn
http://kHCXjkPj.tdfyj.cn
http://4sxnOqFx.tdfyj.cn
http://hn4GHG81.tdfyj.cn
http://Y0vNcHqJ.tdfyj.cn
http://ngpeLRIJ.tdfyj.cn
http://ZxiDUmpo.tdfyj.cn
http://Ojy4XyIR.tdfyj.cn
http://MdPXhUi6.tdfyj.cn
http://UO0ilkTE.tdfyj.cn
http://Mm2TERYq.tdfyj.cn
http://7rBlrINf.tdfyj.cn
http://qyZkTbNA.tdfyj.cn
http://luboGo3Y.tdfyj.cn
http://yTwJAWSv.tdfyj.cn
http://79Z2h8cc.tdfyj.cn
http://KaCEK2yl.tdfyj.cn
http://SNjCmt0p.tdfyj.cn
http://lgX2wvOX.tdfyj.cn
http://7mIDUeQt.tdfyj.cn
http://riWydGcr.tdfyj.cn
http://www.dtcms.com/a/360011.html

相关文章:

  • LangChain框架深度解析:定位、架构、设计逻辑与优化方向
  • Mysql什么时候建临时表
  • 【机器学习基础】监督学习算法的现代理解:从经典方法到无人驾驶与生成式AI的实践应用
  • 柔性数组与不定长数据
  • SpringAI应用开发面试全流程:核心技术、工程架构与业务场景深度解析
  • KingbaseES V009版本发布:国产数据库的新飞跃
  • 嵌入式学习笔记--Linux系统编程--DAY04进程间通信-信号
  • 【Java学习笔记】18.Java数据库编程 - 1
  • 基于Echarts+HTML5可视化数据大屏展示-惠民服务平台
  • AG32 Nano开发板的烧录与调试工具
  • react-beautiful-dnd ​React 拖拽(Drag and Drop)库
  • 网格dp|
  • 机器视觉opencv教程(三):形态学变换(腐蚀与膨胀)
  • pyinstaller打包后失败问题记录
  • Linux系统(项目)之----进程池
  • 搭建卷积神经网络
  • LangChain 核心链式组件对比:从 SequentialChain 到 LCEL
  • 想学怎么写网站怎么办?初学者专用! (HTML+CSS+JS)
  • 【大语言模型 32】Constitutional AI:自我改进的对齐方法
  • TJA1445学习笔记(二)
  • Python入门教程之类型判别
  • Qt Core 之 QString
  • 响应式编程框架Reactor【7】
  • React Hooks useMemo
  • JVM学习总结
  • docker中的命令(四)
  • 大话 IOT 技术(3) -- MQTT篇
  • 机器视觉学习-day19-图像亮度变换
  • 【模型训练篇】VeRL分布式基础 - 框架Ray
  • 分布式相关