SpringBoot 多平台文件配置

news2024/11/15 14:10:39

目录

一  主配置文件和辅配置文件

二  具体使用

1. 通过直接修改 application.yml 中的属性值

2. 通过 maven 进行配置修改


当我们需要部署项目的时候, 肯定会遇到不同的部署环境下, 需要有不同的配置. 例如开发环境下和生产环境下的配置肯定就不会是完全相同的, 如数据库的账号密码等. 这时候就需要使用到多平台文件配置, 来为不同的平台环境下设置不同的配置.

一  主配置文件和辅配置文件

我们需要为不同的环境创建属于各自的配置文件:

例如上图中, 额外创建了两个配置文件, 分别代表了两个环境下的配置:

application-dev.yml, 代表开发环境下的配置文件;

application-prod.yml, 代表生产环境下的配置文件.

除了这两个文件, 原先的 application.yml 也需要进行保留.

application.yml 就称为主配置文件, 而我们另外增加的两个文件就称为是辅配置文件.

注意: 辅配置文件的命名格式需要按照上图进行命名, 也即是: application-{name}.yml

在主配置文件中, 我们可以设置不同环境下相同的配置属性, 在辅配置文件中设置不同环境下不同的配置属性.

二  具体使用

1. 通过直接修改 application.yml 中的属性值

实际的 SpringBoot 项目运行时, 只会将原始的 application.yml 文件识别为程序的配置文件, 而不能识别我们额外创建的其他配置文件, 因此我们就需要在 application.yml 文件中引入我们额外增加的辅配置文件来作用到程序中.

我们只需在下图中的 spring.profiles.active 属性中填入对应的配置文件的值就可以:

可以看出我们需要填入的值就是我们创建辅配置文件中命名时的 {name} 一栏的值, 这也是我们在命名时需要按照上述提到的命名格式来规范命名的原因.

配置好之后, 程序启动时就会找到该值对应的配置文件中的配置项一一进行配置了.

2. 通过 maven 进行配置修改

上述方式虽然已经很方便了, 但是进行不同环境部署之前, 每次打包的时候, 都要对 application.yml 中的值进行修改, 这就难免会偶尔几次忘了的情况, 毕竟要靠人, 但是人又是最不可靠的. 因此还可以通过 maven 支持的方式来避免这种情况的发生.

我们可以在 pom.xml 中设置多平台配置文件对应的 name 的值:

<profiles>: 设置多个平台的配置信息,运行之后选择使用哪个平台即可

<profile>: 设置了一个平台配置,其中包含的是该平台配置的相关信息

<id>: 相当于该平台的名称
<properties>: 该平台配置信息的一些属性,其中的每个属性(也即是标签)都是程序猿自定义的

例如此处, 我就将配置文件的 {name} 值定义为了一个名为 profile.name 的属性

写完之后, 手动刷新以下 maven, 就会发现右侧 maven 选项处多了下图的可选项, 选项对应的名称就是我们在 pom.xml 中设置的 id 名称:

此时就说明我们已经配置成功了.

然后, 在 application.yml 中, 我们无需在 spring.profile.active 一栏填入具体的值了, 而只需使用上述定义好了的属性名即可, 使用方式是: 将属性名使用前后@包括起来:

这样, 当项目进行打包之前, 我们无需再手动修改值, 只需在右侧 maven 选项处勾选我们需要的辅配置文件的选项即可:

按照我个人的理解就是: 相当于将我们本应该填入的值定义为了一个变量(变量名是程序猿自定义的), 然后在 application.yml 中使用该变量, 程序进行打包之前选择该变量的具体值即可.

注意: 在 pom.xml 进行设置了之后, 一定要手动刷新 maven , 否则就会出现以下报错(别问我怎么知道的):

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

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

相关文章

pytorch 批量归一化BatchNorm的BatchNorm1d和BatchNorm2d理解

BatchNorm即批量归一化&#xff0c;是深度学习中经常用到的加速神经网络训练&#xff0c;加速收敛速度及稳定性的算法&#xff0c;是神经网络训练必不可少的一部分。 BatchNorm作用&#xff1a;在进行批量训练过程中&#xff0c;每个batch具有不同的分布&#xff0c;使数据分布…

图片二维码不限扫码次数怎么做?长期有效的图片二维码在线生成技巧

图片制作二维码能长期使用吗&#xff1f;在生活中很多地方都可以看到很多存有图片的二维码&#xff0c;通过扫码后查看图片内容&#xff0c;比如一些公共场所、产品介绍、景区等场所中都有图片转二维码的应用。那么怎么做出可以长期扫码展示图片二维码呢&#xff0c;其实方法很…

CSS 弹性盒子模型

它主要是在一个大的容器当中里面子元素的一个设置。一个大的盒子里面里面的子元素如何摆放由我们的弹性盒子说的算。 之前的盒子模型是一个元素&#xff0c;内边距外边距&#xff0c;边框来调整在页面所显示的位置。 弹性盒子&#xff0c;在大容器里面&#xff0c;里面有很多…

基于C++的配置文件解析器/编码器——toml库

在平常的软件开发过程中&#xff0c;配置文件是重要的一环&#xff0c;使用配置文件在软件开发过程中具有以下好处和必要性&#xff1a; 灵活性&#xff1a;配置文件允许在不修改代码的情况下更改应用程序的行为&#xff0c;通过修改配置文件&#xff0c;可以调整应用程序的参…

智能合约语言(eDSL)—— proc_macro实现合约init函数

我们通过属性宏来实现合约的init函数&#xff0c;call函数其实和init是类似的&#xff1b; GitHub - XuHugo/xwasm 构建属性宏&#xff0c;要在cargo.toml里面设置一些参数&#xff0c;这是必须的。一般来说&#xff0c;过程宏必须是一个库&#xff0c;或者作为工程的子库&…

LabVIEW质谱仪开发与升级

LabVIEW质谱仪开发与升级 随着科技的发展和实验要求的提高&#xff0c;传统基于VB的质谱仪系统已经无法满足当前的高精度和高效率需求。这些系统通常存在着功能不全和操作复杂的问题&#xff0c;影响了科研和生产的进度。为了解决这些问题&#xff0c;开发了一套基于LabVIEW开…

【Web安全】htaccess攻击

.htaccess攻击 文章目录 .htaccess攻击1. .htaccess文件2. 常见用法2.1. 自定义出错界面2.2. 强制文件执行方式2.3. PCRE绕过正则匹配2.4. php_value修改php设定2.5. php_value文件包含2.6. 把htaccess当作php 1. .htaccess文件 .htaccess是Apache网络服务器一个配置文件&#…

MATLAB读取.nc(数据集)文件

MATLAB读取.nc(数据集)文件 以中国1km逐月潜在蒸散发数据集&#xff08;1901-2022&#xff09;为例 首先用FileZilla下载特定年份的数据集 用matlab进行处理&#xff0c;代码如下&#xff1a; clear;clc;ncdisp("pet_2022.nc") %读数据集的具体信息和变量eva ncr…

JAVA中YML:几个用法

项目有一些配置文件&#xff0c;ini、prop类型的配置文件都考虑过后&#xff0c;还是选择yml文件&#xff0c;如上图&#xff1a;xxconfig.yml。 要求&#xff1a; 1、允许实施人员手动配置 2、配置文件要能轻便的转化为一个JAVA对象 3、程序启动后&#xff0c;打印这些配置项&…

蓝桥省赛倒计时 35 天-线性 dp 练习

文章目录 数学三角形最长上升子序列 数学三角形 思路&#xff1a;就是下一层通过上一层的条件转移过来&#xff0c;注意数可以是负数&#xff0c;所以边界得取-INF&#xff0c;这样求上层 max 的时候不会被初始化的数如 0 影响。 #include<bits/stdc.h> using namespace…

【Qt】不透明指针(Opaque Pointer)在Qt源码中的应用

目录 什么是不透明指针&#xff08;Opaque Pointer&#xff09;不透明指针在Qt代码中的应用Qt中与不透明指针相关的一些宏 什么是不透明指针&#xff08;Opaque Pointer&#xff09; GeeksforGeeks中给的定义如下&#xff1a; An opaque pointer is a pointer that points to …

每日一题 — 和为t的两个数

LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; public int[] twoSum(int[] price, int target) {int left 0;int right price.length - 1;while(left < right){//每一次都重新计算和int sum price[…

云上攻防-云原生篇K8s安全实战场景攻击Pod污点Taint横向移动容器逃逸

知识点 1、云原生-K8s安全-横向移动-污点Taint 2、云原生-K8s安全-Kubernetes实战场景 章节点&#xff1a; 云场景攻防&#xff1a;公有云&#xff0c;私有云&#xff0c;混合云&#xff0c;虚拟化集群&#xff0c;云桌面等 云厂商攻防&#xff1a;阿里云&#xff0c;腾讯云&…

jeecgboot 新建子模块 使用@EXCEL实现实现导入导出功能

一&#xff0c;用框架生成增删改查模块 二&#xff0c;在实体类entity 需要导入导出的字段上加上注解Excel 三&#xff0c;在controller类上继承jeecgboot通用controller JeecgController 并且在JeecgController里增加导出模板的方法 /*** 导出excel空模板** param req…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后…

【Python】成功解决AttributeError: ‘MyClass‘ object has no attribute ‘my_attribute‘

【Python】成功解决AttributeError: ‘MyClass’ object has no attribute ‘my_attribute’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门…

力扣算法34. 在排序数组中查找元素的第一个和最后一个位置

Python&Java双语解决力扣必刷算法&#xff0c;题号34. 在排序数组中查找元素的第一个和最后一个位置 目录 题目描述 解题思路 完整代码 Java Python 题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中…

windows下mysql8.3解压安装后临时密码报1045错误解决

过程&#xff1a; 1.登录MySQL官网www.mysql.com&#xff0c;进入产品下载页面。 2.选择MySQL Community&#xff08;GPL&#xff09;Downloads链接跳转下载页。 3.选择MySQL Community Server。 4.选择安装方式。通常有解压包安装和步骤安装两种方式&#xff0c;这里选择了解…

【硬件设计】(更新中)以 UCC27710 为例设计栅极驱动器元件选型(资料摘抄)

还没更新完。。。。。。。 【仅作自学记录&#xff0c;不出于任何商业目的。如有侵权&#xff0c;请联系删除&#xff0c;谢谢&#xff01;】 本文摘抄翻译自&#xff1a; Bootstrap Network Analysis: Focusing on the Integrated Bootstrap Functionality (infineon.com)Boo…

集群下锁失效的问题(JAVA)

一&#xff0c;出现问题的原因 因此每一个锁对象&#xff0c;都会指向一个锁监视器&#xff0c;而每一个锁监视器&#xff0c;同一时刻只能被一个线程持有&#xff0c;这样就实现了互斥效果。但前提是&#xff0c;多个线程使用的是同一把锁。 但问题来了&#xff0c;我们的服务…