`application-{env}.yml` 配置文件来实现多环境配置

在 Spring Boot 应用中,使用多套 `application-{env}.yml` 配置文件来实现多环境配置是一种常见且推荐的做法。这种方式可以帮助你根据不同的环境(如开发、测试、生产等)加载不同的配置,从而实现环境隔离和灵活配置。以下是如何通过这种方式实现多环境配置的详细步骤和示例:

### 1. 创建配置文件

首先,你需要为每个环境创建一个配置文件。这些文件通常命名为 `application-{env}.yml`,其中 `{env}` 是环境的名称,如 `dev`、`test`、`prod` 等。

例如:
- `application-dev.yml`:开发环境配置
- `application-test.yml`:测试环境配置
- `application-prod.yml`:生产环境配置

### 2. 配置文件内容

在每个配置文件中,你可以定义该环境特有的配置项。例如:

**application-dev.yml**

server:port: 8081
spring:datasource:url: jdbc:mysql://localhost:3306/dev_dbusername: dev_userpassword: dev_password

**application-test.yml**
 

server:port: 8082
spring:datasource:url: jdbc:mysql://localhost:3306/test_dbusername: test_userpassword: test_password

**application-prod.yml**

server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/prod_dbusername: prod_userpassword: prod_password

### 3. 激活配置文件

你可以通过以下几种方式激活特定的配置文件:

- **命令行参数**:在启动应用时,通过命令行参数指定激活的配置文件。
  ```bash
  java -jar your-application.jar --spring.profiles.active=prod
  ```

- **环境变量**:设置环境变量 `SPRING_PROFILES_ACTIVE` 来指定激活的配置文件。
  ```bash
  export SPRING_PROFILES_ACTIVE=prod
  java -jar your-application.jar
  ```

- **application.properties**:在 `application.properties` 文件中指定激活的配置文件。
  ```properties
  spring.profiles.active=prod
  ```

### 4. 合并配置

Spring Boot 会自动加载 `application.yml` 或 `application.properties` 中的配置,并与激活的环境配置文件中的配置合并。如果存在相同的配置项,环境配置文件中的配置将覆盖默认配置。

### 5. 使用配置

在你的 Spring Boot 应用中,你可以通过 `@Value` 注解、`@ConfigurationProperties` 注解或 Spring Environment API 来使用这些配置。

**使用 @Value 注解**
@Component
public class MyBean {@Value("${server.port}")private int port;@Value("${spring.datasource.url}")private String datasourceUrl;// getters and setters
}**使用 @ConfigurationProperties 注解**
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {private String url;private String username;private String password;// getters and setters
}

### 6. 多环境配置的优势

- **环境隔离**:不同的环境使用不同的配置,避免配置混淆。
- **灵活性**:可以根据需要轻松切换不同的环境配置。
- **安全性**:敏感信息(如数据库密码)不需要硬编码在代码中,可以放在环境特定的配置文件中。

通过这种方式,你可以有效地管理不同环境的配置,使 Spring Boot 应用更加灵活和可维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/81875.shtml

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

相关文章

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(一)conda环境搭建

先安装miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh chmod x Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh source ~/.bashrc conda --version按照MobileFaceNet的github官方指南,需要…

目标检测 Lite-DETR(2023)详细解读

文章目录 迭代高级特征跨尺度融合高效的低层次特征跨尺度融合KDA:Key-aware Deformable Attention 论文翻译: CVPR 2023 | Lite DETR:计算量减少60%!高效交错多尺度编码器-CSDN博客 DINO团队的 (Lightweight Transfo…

【Git】远程操作

Git 是一个分布式版本控制系统 可以简单理解为,每个人的电脑上都是一个完整的版本库,这样在工作时,就不需要联网 了,因为版本库就在自己的电脑上。 因此, 多个人协作的方式,譬如说甲在自己的电脑上改了文件…

华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的Dify 构建智能客服助手

目录 一、构建智能客服助手应用 二、构建智能客服助手提示词 2.1 什么是智能客服助手? 2.2 生成智能客服助手提示词 三、访问智能客服助手 3.1 智能客服助手发布 3.2 智能客服助手聊天 3.3 开启新会话 四、总结 本篇文章主要基于华为云Flexus云服务的Dify 构…

基于单片机的矩阵键盘与数码管显示实验实践

在单片机开发领域,掌握基础的输入输出控制是迈向复杂项目的关键一步。本次实验聚焦于利用单片机开发板,通过矩阵键盘实现学号后 8 位的输入与数码管显示,旨在掌握数码管显示、软件延时以及键盘扫描及去抖动等核心方法。接下来,就带…

GO语言语法---switch语句

文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…

GO语言学习(三)

GO语言学习(三) GO语言的独特接口可以实现内容和面向对象组织的更加方便,我们从这里来详细的讲解接口,让大家感受一下interface的魅力 interface定义 首先接口是一组方法签名的组合,我们通过接口来实现定义对象的一…

anaconda创建环境出错HTTPS

报错信息 warnings.warn( /home/ti-3/anaconda3/lib/python3.12/site-packages/urllib3/connectionpool.py:1099: InsecureRequestWarning: Unverified HTTPS request is being made to host ‘repo.anaconda.com’. Adding certificate verification is strongly advised. Se…

Android 自定义SnackBar和下滑取消

如何自定义SnackBar 首先我们得了解SnackBar的布局: 之前我看有一些方案是获取内部的contentLayout,然后做一些处理。但是现在已经行不通了: RestrictTo(LIBRARY_GROUP) public static final class SnackbarLayout extends BaseTransientB…

JavaScript性能优化实战(13):性能测试与持续优化

在前面的系列文章中,我们探讨了各种JavaScript性能优化的方法和实战案例。然而,优化工作不应仅是一次性的努力,而应当成为开发流程中的常态。本篇将聚焦于如何建立系统化的性能测试体系,并实现持续的性能优化机制,确保应用长期保持出色的性能表现。 前端性能测试体系构建…

《告别低效签约!智合同如何用AI重构商业“契约时代”》​​——解析智能合约技术的爆发与行业变革

在数字化浪潮奔涌的当下,合同作为商业活动的核心枢纽,正经历着智能化的深度变革。智合同-合同智能应用这一创新模式,犹如一颗璀璨的新星,在商业领域的天空中绽放出独特光芒,深刻改变着人们对合同管理与应用的认知和实践…

塔防战争:动态寻径与成长系统的控制论架构

目录 塔防战争:动态寻径与成长系统的控制论架构引言第一章 炮塔成长系统1.1 属性升级模型1.2 分支进化树第二章 动态路径规划2.1 JPS优化算法2.2 实时障碍更新第三章 敌人行为系统3.1 多波次生成3.2 智能绕障策略第四章 经济平衡系统4.1 资源流动方程4.2 动态定价模型第五章 特…

快速刷机Android10+Root

说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、下载android10源码 1.确认手机可刷机范围 比如我的Piexel3机型,支持刷android9-android12 Android源码。 https://de…

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(24):受身形

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(24):受身形 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)うけみけい 受身形(2)復習(ふくしゅう):3、单词(1)日语(2)日语片假名单词4、相近词练习5、单词辨析记录6、总结1、前言 (1)情况说明 自己在今…

Ankr:Web3基础设施的革新者

在Web3技术蓬勃发展的今天,去中心化基础设施的重要性日益凸显。Ankr作为这一领域的佼佼者,凭借其强大的分布式云计算能力和创新的技术解决方案,正在成为推动Web3发展的关键力量。本文将深入探讨Ankr的技术亮点、应用场景以及其在区块链生态中…

【NLP 75、如何通过API调用智谱大模型】

事事忘记,事事等待,事事自愈 —— 25.5.18 一、调用智谱大模型 zhipuai.model_api.invoke():调用智谱 AI 的大模型(如 ChatGLM)进行文本生成或推理,支持同步请求。 参数列表 参数名类型是否必需默认值说…

【jvm第0集】jvm学习路线指南

jvm学习路线指南 分享jvm学习路线指南,每个模块深入学习都要花费很多时间,但这个是每个java程序员的必修之路,大家可以跟着我的文章学习,可以不精,但必须懂。因为等你需要解决jvm相关问题的时候,你已经知道…

企业终端设备的安全管控

企业终端设备的安全管控是信息安全体系中的重要环节,涉及从设备准入到数据防护的全生命周期管理。 以下是一套系统化的解决方案,涵盖技术、管理和人员三个维度: 一、终端设备全生命周期管控 设备准入控制 802.1X网络认证:对接企业…

Flink SQL 计算实时指标同比的实现方法

在 Flink SQL 中计算实时指标的同比(Year-on-Year),核心是通过时间窗口划分周期(如日、月、周),并关联当前周期与去年同期的指标值。以下是结合流数据处理特性的具体实现方法,包含数据准备、窗口聚合、历史数据关联等关键步骤。 一、同比的定义与场景 同比指当前周期指…

架构的设计

搭建架构的最低前提 1.设计清晰: 需求文档: 有哪些界面 每个界面提够了哪些功能 这些功能是怎样操作的 会有哪些反馈 2.技术: 写架构的同学:这次项目设计的技术 都要有料及(用到的技术有哪些特点 有哪些缺点&…