尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Spring Boot Profile 多环境切换实战 —— 以 springboot-properties 为例(含踩坑)
Spring Boot Profile 多环境切换实战springboot-properties 踩坑记录Spring Boot Profile 多环境切换实战 —— 以 springboot-properties 为例含踩坑本文基于 springboot-learning-example 中的springboot-properties模块记录 Spring Boot 多环境Profile切换的几种方式、配置优先级以及运行测试时容易踩的两个坑。一、项目背景该模块演示用ConfigurationProperties绑定自定义配置并通过 Profile 区分开发dev与生产prod环境。启动类Application.java实现了CommandLineRunner启动时会打印HomePropertiesHelloWorldController在/返回 Hello,World!。二、Spring Boot Profile 是什么Profile 是 Spring 提供的「按环境隔离配置」的机制。核心约定主配置文件application.properties环境专属文件application-{profile}.properties如application-dev.properties、application-prod.properties通过spring.profiles.active指定激活哪个环境三、本项目的多环境配置application.properties主指定激活环境# Spring Profiles Active spring.profiles.activeprodapplication-dev.properties开发环境## 家乡属性 Dev home.provinceZheJiang home.cityWenLing home.descdev: Im living in ${home.province} ${home.city}.application-prod.properties生产环境## 家乡属性 Prod home.provinceZheJiang home.cityWenLing home.descprod: Im living in ${home.province} ${home.city}.dev 与 prod 仅home.desc前缀不同dev:/prod:这正是用来验证当前激活环境的「标记」。四、4 种切换环境的方式优先级高 → 低命令行参数 / 环境变量 主配置文件 默认值。下面 4 种方式任选其一即可。方式 1修改主配置文件最常用随代码提交# application.properties spring.profiles.activedev # 改成 dev / prod 即可方式 2运行 Jar 时传命令行参数不改动文件推荐部署用java -jar target/springboot-properties-0.0.1-SNAPSHOT.jar --spring.profiles.activeprod方式 3Maven 插件启动时指定开发调试用mvn spring-boot:run -Dspring-boot.run.profilesprod方式 4环境变量容器 / 服务器部署最常用# Linux / macOS export SPRING_PROFILES_ACTIVEprod # Windows set SPRING_PROFILES_ACTIVEprod五、优先级速查表方式示例优先级适用场景命令行参数--spring.profiles.activeprod最高临时验证、部署环境变量SPRING_PROFILES_ACTIVEprod高Docker / K8s主配置文件spring.profiles.activeprod中随代码固定默认值无最低兜底提示高优先级的配置会「覆盖」低优先级所以命令行/环境变量设了 prod就算文件里写 dev 也会生效 prod。六、如何验证当前环境生效启动应用后看两处控制台打印的HomeProperties中desc字段 —— 带dev:还是prod:前缀。或浏览器访问http://localhost:8080/确认接口正常返回。HomeProperties{provinceZheJiang, cityWenLing, descprod: Im living in ZheJiang WenLing.}七、附运行测试时的两个隐藏坑坑 Amvn test测试被悄悄跳过pom 里maven-surefire-plugin写死了skipTeststrue/skipTests。这个值是写在configuration里的字面量命令行-DskipTestsfalse根本覆盖不了导致测试一直被跳过。解决把 pom 中skipTests改为false。坑 B运行 SpringBootTest 报 NoSuchMethodErrorpom 里硬编码了spring-boot-test:1.4.2.RELEASE与父依赖spring-boot 2.1.3.RELEASE冲突运行时抛NoSuchMethodError: SpringApplication.init(java.lang.Object[])。解决删除这个冗余依赖spring-boot-starter-test已经带正确版本。修复后运行单个测试方法的命令cd springboot-properties mvn test -DtestPropertiesTest#getHomeProperties八、总结切换环境本质就是改spring.profiles.active4 种方式按场景选。优先级记住一句话命令行 环境变量 配置文件。用home.desc前缀这个「标记」快速验证环境是否真的切换成功。跑测试前先确认 pom 没把skipTests写死、没引冲突的老版本依赖。
RELATED

相关推荐

AI行业人才需求变化与职业发展策略

AI行业人才需求变化与职业发展策略

1. 为什么AI公司正在低调扩张 最近半年,我注意到一个有趣的现象:不少AI领域的创业公司都在悄悄扩编,招聘信息既不挂在官网也不发在主流招聘平台,而是通过行业小圈子或者猎头定向推送。这种"静默招聘"现象背后&#xff0…

📅 2026/9/18 13:05:17
树莓派4B变身软路由全攻略:从OpenWrt刷机到双网卡配置避坑指南

树莓派4B变身软路由全攻略:从OpenWrt刷机到双网卡配置避坑指南

树莓派4B软路由实战:从闲置板卡到高性能网络中枢的完整构建 手头有一块闲置的树莓派4B,除了偶尔跑跑脚本、做做小实验,似乎总感觉它的潜力没有被完全释放。如果你也和我一样,看着这块性能不俗的板卡,思考着如何让它发挥更大的价值,那么将其改造为一台高性能软路由,或许…

📅 2026/8/22 18:16:47
Gino同传带练小伙伴Dora第12天,介入无稿同传练习第1天。Gino同传带练,每个小伙伴的基础不同情况不一样,有针对性地安排先练哪一项。有的可能先练视译,有的可能先练有稿同传,有的可能先练无稿

Gino同传带练小伙伴Dora第12天,介入无稿同传练习第1天。Gino同传带练,每个小伙伴的基础不同情况不一样,有针对性地安排先练哪一项。有的可能先练视译,有的可能先练有稿同传,有的可能先练无稿

Gino同传带练小伙伴Dora第12天,介入无稿同传练习第1天。Gino同传带练,每个小伙伴的基础不同情况不一样,有针对性地安排先练哪一项。有的可能先练视译,有的可能先练有稿同传,有的可能先练无稿同传。不管先练哪项&#x…

📅 2026/9/14 6:33:51
MORE NEWS

更多资讯

📰

药店管理系统数据库设计:从E-R图到SQL Server实现与优化

简介:一份面向计算机相关专业学生的数据库课程设计报告,主题为药店管理系统的开发与实现,可作为课程设计、毕业设计或实训项目的参考范本。报告基于SQL Server 2008进行数据库搭建,结合PowerDesigner与Diagram Designer绘制数据模…

📰

OpenMed 配置优先级审计:default / file / environment / cli 四层来源的确定性解析与无值溯源报告

OpenMed 配置优先级审计:default / file / environment / cli 四层来源的确定性解析与无值溯源报告 【免费下载链接】openmed Local-first healthcare AI: clinical NER & HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 lan…

📰

数据结构零基础入门:从数组链表到哈希树图,一文吃透核心概念与学习路线

先说结论:数据结构这门课,劝退的人多,吃透的人香。作为计算机专业里公认的“地基课”,它不直接教你怎么写出一个网站,也不直接教你怎么调一个模型,但它决定了你写出来的代码,在数据量从一百涨到…

📰

Linux使用

linux命令大全 linux内核 远程工具:winscp、MobaXterm、vnc 0、 linux的版本 优麒麟 20.04 LTS Pro 银河麒麟桌面操作系统V10和银河麒麟高级服务器操作系统V10,分别推出了飞腾、鲲鹏、龙芯、申威、海光、兆芯六个版本(linux5.10.5&#xff…

📰

oam-tools HCCL Test 集合通信性能测试工具命令行参数全解析

oam-tools HCCL Test 集合通信性能测试工具命令行参数全解析 【免费下载链接】oam-tools 本项目为开发者提供故障定位工具,包含故障信息收集,软硬件信息展示,AI core error报错分析等能力,提升故障问题定位效率,文档可…

📰

深入解读 Zcash z9 里程碑:Equihash 方案压缩、zkSNARK 优化与钱包密钥体系重构

深入解读 Zcash z9 里程碑:Equihash 方案压缩、zkSNARK 优化与钱包密钥体系重构 【免费下载链接】zcash Zcash - Internet Money 项目地址: https://gitcode.com/GitHub_Trending/zc/zcash Zcash 0.11.2.z9 是正式发布前的关键测试版本(testnet 里…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬