SpringBoot多环境配置完整过程记录
多环境开发
引入:开一家奶茶店的故事
假如你要开一家网红奶茶店,从筹备到营业,你会经历这几个阶段:
工地装修期(开发环境)
你在毛坯店里敲敲打打、试装水电、调整位置。这时候你可以随意改动,打翻油漆、钻错孔都没关系,反正还没客人。
对应到项目里,这就是开发环境——你可以随便改代码、删测试数据、打印调试日志,不怕影响用户试营业样板间(测试环境)
装修完成后,你邀请亲朋好友来试喝:用和正式开业一样的设备、原料、菜单,模拟真实订单流程,看看奶茶好不好喝、出餐效率够不够、收银系统稳不稳定。
对应到项目里,这就是测试环境——用生产脱敏数据、接近生产的配置,让专门的测试人员验证功能,提前发现问题正式营业(生产环境)
一切准备就绪,开门迎客。这时候你必须保证:原料新鲜、设备稳定、出餐高效,不能再像试营业时那样随便调整配方,更不能让客人喝到“调试版”奶茶。
对应到项目里,这就是生产环境——面向真实用户,要求绝对稳定、安全,日志只打关键错误,功能不能随意改动。
如果跳过“试营业”直接开业,你可能会遇到:菜单打印错误、收银系统崩溃、奶茶口味不稳定等等一系列本可以轻易排除的问题
一、什么是多环境?
多环境 就是为软件项目在不同阶段(开发、测试、上线)提供独立的“运行容器”(将所需资源和项目本身部署到不同的机器上),每个容器拥有专属的配置、数据和运行规则,彼此完全隔离,互不影响。
二、为什么要搞多环境?
1. 隔离风险:避免“本地好的,线上炸了”
- 数据隔离:开发时可以随意删改测试数据,不会影响生产环境的真实用户数据;
- 配置隔离:开发环境开启调试日志、热部署,生产环境关闭调试、开启性能优化,避免配置混乱;
- 功能隔离:新功能先在开发/测试环境验证,没问题再上线,避免直接影响用户。
2. 提升效率
- 开发:专注功能开发,不用关心线上配置和数据;
- 测试:在接近生产的环境验证功能,发现的Bug更贴近真实场景;
- 运维:稳定部署和维护生产环境,不用处理开发/测试环境的临时问题。
3. 保障稳定:提前发现生产级问题
- 测试环境用生产脱敏数据(如10万条用户数据),可以提前发现性能问题(如慢SQL、接口超时);
- 预发布环境1:1复制生产配置,上线前做最后验证,避免直接炸生产。
三、多环境的种类
基础三环境
| 环境名称 | 英文标识 | 奶茶店类比 | 关键特点 |
|---|---|---|---|
| 开发环境 | dev | 工地装修期 | 数据可随意删改、日志全开、支持热部署 |
| 测试环境 | test | 试营业样板间 | 数据是脱敏生产副本、配置接近生产、定期重置 |
| 生产环境 | prod | 正式营业 | 数据绝对安全、日志极简、性能优先 |
扩展五环境(复杂项目需要)
在三环境基础上增加两个阶段,进一步降低风险:
- 预发布环境(pre):正式开业前的「压力测试」,用真实设备和原料模拟高峰时段,验证出餐效率;
- 演示环境(demo):给投资人/加盟商看的「品牌旗舰店」,装修精美、数据美化,功能稳定。
四、应用:Spring Boot 多环境配置
1. 配置文件分类
在 src/main/resources 目录下创建以下文件,命名遵循 Spring Boot 官方规范:
application.yml:主配置文件(激活环境、公共配置)application-dev.yml:开发环境配置application-test.yml:测试环境配置application-prod.yml:生产环境配置

2. 核心配置示例
主配置文件application.yml
spring:
application:
name: milk-tea-shop
profiles:
active: dev # 默认激活开发环境(工地模式)
开发环境application-dev.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_milk_tea
username: root
password: root
logging:
level:
root: debug # 调试日志
生产环境application-prod.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://prod-db:3306/prod_milk_tea
username: ${DB_USERNAME} # 环境变量读取敏感信息
password: ${DB_PASSWORD}
logging:
level:
root: warn # 只打印警告/错误
3. 激活环境的3种方式
- 配置文件指定:修改
application.yml中的spring.profiles.active=prod - 命令行指定:
java -jar milk-tea-shop.jar --spring.profiles.active=prod(可以用maven里的package指令打成 jar包 后操作) - IDE指定:在启动配置的
Program arguments中添加--spring.profiles.active=dev
总结
到此这篇关于SpringBoot多环境配置的文章就介绍到这了,更多相关SpringBoot多环境配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
一步步讲解Spring Boot整合MyBatis与PostgreSQL实战指南
这篇文章主要介绍了如何在SpringBoot环境中集成MyBatis和PostgreSQL,涵盖了环境搭建、项目创建、数据源配置、实体类与Mapper接口定义、MapperXML文件编写、业务层与控制层实现以及测试与验证的全过程,需要的朋友可以参考下2025-02-02
Java并发编程深入理解之Synchronized的使用及底层原理详解 下
在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile2021-09-09
Java处理InterruptedException异常的理论与实践
在使用Java的过程中,有个情景或许很多人见过,您在编写一个测试程序,程序需要暂停一段时间,于是调用 Thread.sleep()。但是编译器或 IDE 报错说没有处理检查到的 InterruptedException。InterruptedException 是什么呢,为什么必须处理它?下面跟着小编一起来看看。2016-08-08
JAVA中HTTP基本认证(Basic Authentication)实现
HTTP 基本认证是一种简单的认证方法,本文主要介绍了JAVA中HTTP基本认证(Basic Authentication),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-07-07
spring boot+vue实现JSAPI微信支付的完整步骤
JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付,下面这篇文章主要给大家介绍了关于spring boot+vue实现JSAPI微信支付的相关资料,需要的朋友可以参考下2022-05-05


最新评论