Spring Boot 如何使用 Maven 实现多环境配置管理

Spring Boot 如何使用 Maven 实现多环境配置管理

实现多环境配置有以下几个重要原因:

  • 适应不同的部署环境:在实际部署应用程序时,通常会有多个不同的部署环境,如开发环境、测试环境、生产环境等。每个环境可能需要不同的配置,例如数据库连接信息、日志级别、缓存配置等。通过实现多环境配置,可以方便地适应不同的部署环境,而无需手动修改配置文件。

  • 提高灵活性和可维护性:通过将不同环境的配置分离开来,可以提高系统的灵活性和可维护性。开发人员可以专注于当前环境的配置,而不必担心影响其他环境的配置。同时,当需要修改某个环境的配置时,也可以更加方便地进行管理和维护。

  • 降低人为错误的风险:手动修改配置文件很容易引入人为错误,特别是在频繁切换环境或部署时。通过实现多环境配置,可以减少手动操作的风险,提高系统的稳定性和可靠性。

  • 支持持续集成和持续部署:在持续集成和持续部署的过程中,需要自动化地构建和部署应用程序到不同的环境。多环境配置可以帮助自动化流程更加顺利地进行,从而提高开发和部署的效率。

项目目录结构:

在这里插入图片描述

POM 配置

在pom.xml文件中,使用maven-profile和maven-resources-plugin插件来实现多环境配置管理。在插件配置中,可以指定不同的配置文件,根据不同的环境打包不同的配置文件。

<profiles>
   <!-- 本地开发 -->
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!-- 测试 -->
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
    <!-- 生产 -->
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/resources-env/${env}</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

src/main/resources 配置文件

application.yml

spring:
  #  Spring Boot 2.4为了提升对Kubernetes的支持 将 spring.profiles 作废了
  #  profiles:
  #    active: config,config1,config2,config3
  # 替换上面作废的spring.profiels.actice配置参数
  config:
    import: application-config.yml,application-config1.yml,application-config2.yml,application-config3.yml

application-config.yml

biz:
  total: application

src/main/resources-env/ 多环境配置文件

本地开发
dev/application-config1.yml

biz:
  env: dev-environment
  profile: dev-profile

生产
prod/application-config1.yml

biz:
  env: prod-environment
  profile: prod-profile

测试
test/application-config1.yml

biz:
  env: test-environment
  profile: test-profile

编写测试代码

PropertiesApplication 启动类

@SpringBootApplication
public class PropertiesApplication {

    public PropertiesApplication(Environment environment) {
        String total = environment.getProperty("biz.total");
        String env = environment.getProperty("biz.env");
        String profile = environment.getProperty("biz.profile");

        System.out.println("total = " + total + ", env = " + env + ", profile = " + profile);
    }

    public static void main(String[] args) {
        SpringApplication.run(PropertiesApplication.class, args);
    }
}

环境测试

dev环境

 <profile>
    <id>dev</id>
    <properties>
        <env>dev</env>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

打印信息:total = application, env = dev-environment, profile = dev-profile

在这里插入图片描述
test环境

 <profile>
    <id>test</id>
    <properties>
        <env>test</env>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

打印信息:total = application, env = test-environment, profile = test-profile

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

虹科方案丨从困境到突破:TigoLeap方案引领数据采集与优化变革

来源&#xff1a;虹科工业智能互联 虹科方案丨从困境到突破&#xff1a;TigoLeap方案引领数据采集与优化变革 原文链接&#xff1a;https://mp.weixin.qq.com/s/H3pd5G8coBvyTwASNS_CFA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 导读 在数字化工厂和智能制造时…

【新手小白的xsslab靶场学习】

第1关 最开始页面源代码 直接输入<script>alert(1)</script> 第2关 页面源代码 先尝试<script>alert(1)</script>看页面源代码 <h2>里面尖括号被编码&#xff0c;<input>里面没有编码,直接双引号闭合&#xff0c; 修改payload&…

Python 数据库(一):使用 mysql-connector-python 操作 MySQL 数据库

大家好&#xff0c;我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时&#xff0c;mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能&#xff0c;使您能够执行各种数据库操作&#xff0c;如连接数据库、执行查询和插入数据等。在本文…

Unity ShaderGraph 技能冷却转圈效果

Unity ShaderGraph 技能冷却转圈效果 前言项目场景布置代码编写ShaderGraph 连线总结 参考 前言 遇到一个需求&#xff0c;要展示技能冷却的圆形遮罩效果。 项目 场景布置 代码编写 Shader核心的就两句 // 将uv坐标系的原点移到纹理中心 float2 uv i.uv - float2(0.5, 0…

安装VS Code到AWS EC2 Linux 2

文章目录 小结问题及解决参考 小结 本文记录了安装VS Code到AWS EC2 Linux 2。 问题及解决 安装VS Code到AWS EC2 Linux 2采取了以下步骤&#xff1a; 更新VS Code的YUM源&#xff1a; [ec2-userip-100-92-28-119 ~]$ sudo rpm --import https://packages.microsoft.com/k…

Typora+PicGo+Gitee构建云存储图片

创建Gitee仓库 首先&#xff0c;打开工作台 - Gitee.com&#xff0c;自行注册一个账户 注册完后&#xff0c;新建一个仓库&#xff08;记得仓库要开源&#xff09; 然后创建完仓库后&#xff0c;鼠标移动到右上角头像位置&#xff0c;选择设置&#xff0c;并点击&#xff…

深度生成模型之GAN基础 ->(个人学习记录笔记)

文章目录 深度生成模型之GAN基础生成对抗网络1. 生成对抗网络如何生成数据2. 生成对抗原理3. GAN的核心优化目标4. D的优化5. GAN的理想状态6. GAN的训练7. 梯度不稳定与模式崩塌(collapse mode)问题8. 梯度消失问题 深度生成模型之GAN基础 生成对抗网络 1. 生成对抗网络如何…

安全数据交换系统:有效提升网间文件交换能力

各级政府部门和金融、能源、电力这些行业&#xff0c;以及一些大中型企业组织&#xff0c;为了保护内部的重要数据不外泄&#xff0c;普遍都采用了多网络并行的方式&#xff0c;也是做了网络隔离划分&#xff0c;不同的网络拥有不同的密级以及人员权限。然后再通过安全数据交换…

机器人动力学一些笔记

动力学方程中&#xff0c;Q和q的关系(Q是sita) Q其实是一个向量&#xff0c;q(Q1&#xff0c;Q2&#xff0c;Q3&#xff0c;Q4&#xff0c;Q5&#xff0c;Q6)&#xff08;假如6个关节&#xff09; https://zhuanlan.zhihu.com/p/25789930 举个浅显易懂的例子&#xff0c;你在房…

大文件断点下载Range下载zip包显示文件损坏

问题&#xff1a;大文件下载&#xff0c;其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图&#xff0c;10.4kb是已经约去小数点的值&#xff0c;准确的大小应该是10663字节10.4130859375KB&#xff0c;所以用10.…

微服务-理论(CAP,一致性协议)

CAP理论 关于CAP理论的介绍可以直接看这篇文章 CAP分别是什么&#xff1f; 一致性&#xff08;Consistency 一致性包括强一致性&#xff0c;弱一致性&#xff0c;最终一致性。 一致性其实是指数据的一致性&#xff0c;为什么数据会不一致呢&#xff1f; 如上面这张图&…

R语言——reshape2包、tidyr包、dplyr包(五)

目录 一、数据转换之reshape2包&#xff1a;melt与dcast函数 二、数据转换之tidyr包&#xff1a;gather与spread函数&#xff0c;separate与unite函数 三、据转换之dplyr包 四、参考 一、数据转换之reshape2包&#xff1a;melt与dcast函数 merge 函数 使用merge函数 x &l…

每日一练:LeeCode-739. 每日温度(中)【单调栈】

本文是力扣LeeCode-739. 每日温度&#xff08;中&#xff09; 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其…

SQL Server 备份和还原

CSDN 成就一亿技术人&#xff01; 难度指数&#xff1a;* CSDN 成就一亿技术人&#xff01; 目录 1. 备份 01. 为什么要备份&#xff1f; 02. 备份的类型 03. 备份实例 2. 还原 01. 还原类型 02. 删除数据库 03. 还原数据库 测试 04. 恢复失败的原因 1. 备份 01.…

冒泡排序-排序算法

前言 如果有6个人站成一排&#xff0c;要将他们按从矮到高的顺序排列。你可能有多种方式来完成。但是如果其中有一个人特别高&#xff0c;比他身边的人高&#xff0c;在队伍中特别明显&#xff0c;你可以轻易看出那个最高的需要和身边的人交换位置&#xff0c;这是冒泡排序的核…

自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程。在大模型ChatGPT发布之前,NLP领域是BERT,T5模型为主导,T5(Text-to-Text Transfer Transformer)是一种由Google Brain团队在2019年提出的自然…

iOS 小组件开发

iOS14之后Apple引入了新的WidgetKit&#xff0c;舍弃了原有额TodayExtension。 开发准备&#xff1a; 新的WidgetExtension只能通过SwiftUI进行开发&#xff1b; Widget有三种尺寸&#xff1a;systemSmall、 systemMedium、systemLarge&#xff0c;三种尺寸对应固定的UI类型布…

简易机器学习笔记(六)不同优化算法器

前言 我们之前不是说了有关梯度下降公式的事嘛&#xff0c;就是那个 这样梯度下降公式涉及两个问题&#xff0c;一是梯度下降的策略&#xff0c;二是涉及到参数的选择&#xff0c;如果我们选择固定步长的时候&#xff0c;就会发现我们求的值一直在最小值左右震荡&#xff0c…

java 开源中文的繁简体转换工具 opencc4j-01-overview

Opencc4j Opencc4j 支持中文繁简体转换&#xff0c;考虑到词组级别。 拓展阅读 pinyin 汉字转拼音 pinyin2hanzi 拼音转汉字 segment 高性能中文分词 opencc4j 中文繁简体转换 nlp-hanzi-similar 汉字相似度 word-checker 拼写检测 sensitive-word 敏感词 Features 特…

视频融合云平台/智慧监控平台EassyCVR告警警告出错是什么原因?该如何解决?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…