【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.pswp.cn/bicheng/95207.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP 分块传输编码:深度解析与报文精髓

分块传输编码(Chunked Transfer Encoding)是 HTTP/1.1 协议中的一项核心特性,它允许服务器在不预先知道响应体总大小的情况下,高效地传输数据。这项技术解决了传统 Content-Length 机制的局限性,使得 HTTP 协议能够完美…

Vue 项目首屏加载速度优化

Vue 项目首屏加载从 5s 到 1.5s:4 步落地优化方案,附完整代码 数据对比前段时间我在做一个活动时,打包加载后发现打开页面要等半天,经过几天的优化,最终将首屏加载时间从5秒压到 1.5 秒。这篇文章会把整个优化过程拆解…

Java学习第十六部分——JUnit框架

目录 一.概述 二.作用 三.版本 四.优势 五.局限性 六.发展方向 七.核心组件 1 测试用例 2.断言(Assertions) 3.测试生命周期 4.测试运行器 八.简单示例 九.JUnit 4 与 JUnit 5 的区别 十.idea项目实战 1.在idea中创建Java项目&#xff0c…

[吾爱原创] 千千每日计划

[吾爱原创] 千千每日计划 链接:https://pan.xunlei.com/s/VOYuE8p-KIV-NJr2_0d1Ak9YA1?pwdbqez# 介绍:千千系列的最后一款软件,一款每日计划的一款软件,并且支持时间段修改和打卡和导入导出等功能。 功能: 1.设置每天的计划 2…

docker命令(二)

目录 docker命令 1.inspect命令(查看镜像信息) 2.tag命令(为镜像起别名) 3.--help命令(查看命令的使用帮组) docker 命令 --help docker --help 4.run命令 1.格式 2.启动tomcat镜像 3. docker 不能被外部访…

Dockerfile实现java容器构建及项目重启(公网和内网)

公网情况0.Dockerfile关键字关键字作用一句话出现位置FROM指定基础镜像(任何 Dockerfile 必须且首行)全局RUN在镜像构建阶段执行命令(常用来安装软件)构建期COPY把宿主机文件/目录复制进镜像构建期ADD类似 COPY,但额外…

SpringCloud与Dubbo深度对比:架构、性能与生态全解析

引言在微服务架构盛行的今天,服务治理框架的选择成为企业技术栈决策的关键环节。Spring Cloud和Dubbo作为Java生态中最具代表性的两大微服务框架,各自拥有独特的优势和适用场景。本文将从架构设计、服务治理、性能表现、生态系统等多个维度进行深度对比&…

简历书写---自我评价怎么写

前言 今天一对一辅导了很多同学做简历,看到很多同学简历上都有一栏:自我评价 那我们就要思考一下,我们搞技术的,一份技术简历,自我评价上怎么写,才能算一个加分点呢? 观点分享 首先,…

嵌入式Linux学习 - 数据库开发

目录 一. 在终端的使用 1. 下载 2. 操作 3. 相关函数 1.增 2. 删 3. 改 4. 查 5. 补充函数 二. 在软件的使用 1. 下载 2. 操作 三. 在编程的使用 1. 下载 2. 相关函数 1. 打开 2. 读写执行sql语句 3. 关闭 一. 在终端的使用 1. 下载 sudo apt-get install …

产品运营必备的职场通用能力有哪些?如何一步步提升?

在流量红利消退的存量竞争时代,产品运营岗位正经历价值重构。单纯的活动策划与用户维护已无法满足发展需求,数据驱动的精细化运营成为行业分水岭。面对这场变革,复合能力建设与前瞻工具掌握是运营人突破天花板的密钥。推荐考取CDA数据分析师&…

ESPTimer vs GPTimer:ESP32 定时器系统深度解析

第十五章和第十六章分别学习了​​ESPTimer​​ 和 ​​GPTimer​​ ,那这两种定时器有什么区别,如何使用呢,下面探讨下。1. 两种定时器对比介绍1.1 两种定时器设计在 ESP32 开发中,​​ESPTimer​​ 和 ​​GPTimer​​ 是两种完…

【70页PPT】WMS助力企业数字化转型(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91806268 资料解读:【70页PPT】WMS助力企业数字化转型 详细资料请看本解读文章的最后内容。仓储管理在企业运营中占据关键地位&a…

[光学原理与应用-337]:ZEMAX - 自带的用于学习的样例设计

ZEMAX(OpticStudio)内置了大量样例设计文件,这些文件覆盖了从基础光学原理到复杂系统设计的全场景,是学习光学设计、掌握软件操作、理解像差理论的绝佳资源。以下是ZEMAX自带样例设计的详细分类、使用方法及学习价值分析&#xff…

下一波红利:用 #AI编程 闯入小游戏赛道,#看广告变现 模式正在崛起!

文章标题(可选,均包含核心关键词) 【主推标题】 #AI编程制作小游戏 的终极 #变现 指南:如何通过 #看广告变现 轻松赚钱 【疑问式标题】 #AI制作小游戏 真的能赚钱吗?揭秘 #AI编程赚钱 的四大核心路径与广告变现策略 【趋势型标题】 下一波红利:用 #AI编程 闯入小游戏赛道…

【git】add后不想commit怎么实现pull

本地有改动已 git add 到暂存区(stage),但是还没 commit,同时远端有 28 个新提交需要拉取。 直接 git pull 会冲突或被拒绝,因为你本地有 staged 修改。 处理步骤有几种方案,我给你推荐最稳妥的几种:✅ 方法 1&#xf…

Unable to establish SSL connection. curl静态编译

博主有个老RHEL系统,内核2.6.18;ssl不管用了,最简单的wget也不行,下面编个静态编译的新版 curl 用用(不影响yum源,不然的话系统自带的旧版 OpenSSL 受影响得得不偿失),来最优化解决下…

Redis-08 SpringBoot集成Redis常见问题

SpringBoot集成Redis的教程网上很多,总体来说就是三个步骤:添加依赖、修改配置文件、自定义Redis配置类(自定义序列化器),具体步骤可自行搜索,本文主要解惑集成中的常见疑问。 1,选择什么依赖&…

数据结构:选择排序 (Selection Sort)

目录 从学生排队开始 算法的初始状态和核心操作 代码的逐步完善 第一阶段:定义函数框架和外层循环 第二阶段:实现“寻找最小元素”的逻辑(内层循环) 第三阶段:完成“交换”操作 复杂度与特性分析 时间复杂度 (…

Django Admin 管理工具

一、简介Django Admin 是 Django 框架最受欢迎和强大的特性之一。它是一个自动生成的管理后台,允许开发者无需或仅需编写少量代码,就能对网站的数据模型(数据库中的表)进行直观的增、删、改、查(CRUD)操作。…

园区智慧水电管理系统:让能源管理从“成本黑洞”变“利润引擎”

园区智慧水电管理系统,是一套专为产业园区、科技园、企业总部等大型空间设计的集智能计量、远程管控、自动计费、能耗分析于一体的数字化能源解决方案。它用技术手段解决水电管理中的“抄表难、收费乱、浪费多、数据缺”四大顽疾,真正实现降本、提效、控…