【SpringBoot】多环境切换的灵活配置

文章目录

  • profile 的使用
  • 激活 profile 的方式
    • 命令行启动
    • idea 中配置
    • 配置文件中激活
  • 开发中最灵活的多环境配置
    • 创建四个配置
    • 主配置文件
    • 其他几个环境配置
    • 使用方式
  • 配置文件拆分
  • 总结

在日常的开发中,一般都会分好几种环境,比如通常的

  • 开发环境:一般在开发的过程中,一个比较随意地环境,通常可以随意重启,删除数据 ;
  • 测试环境:面向测试同学的环境,需要相对稳定,完整,基本模拟线上的环境,但是可操作。
  • 生产环境:也就是线上环境,基本没有什么大的问题不会操作的环境,是重中之重。

在三个环境都需要部署,怎么样保证多个环境的配置正确,开发方便,部署方便,这篇总结下

profile 的使用

profile 为在不同环境下使用不同的配置提供了支持,我们可以通过激活、指定参数等方式快速切换环境。多 Profile 文件方式 Spring Boot 的配置文件共有两种形式:.properties 文件和 .yml 文件,不管哪种形式,它们都能通过文件名的命名形式区分出不同的环境的配置,

文件命名格式为:application-{profile}.properties/yml

其中,{profile} 一般为各个环境的名称或简称,

例如 dev、test 和 prod 等等。当然也可以使用自定义的一些名字。

个人比较习惯yml的配置,更方便阅读,结构明确。

激活 profile 的方式

命令行启动

java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

idea 中配置

idea 中编辑启动参数,添加 vm 选项-Dspring.profiles.active=test注:这种方式和上面一样

在这里插入图片描述

配置文件中激活

创建 3 个配置文件,通过主配置文件激活环境(不灵活)

application.yml
application-dev.yml
application-test.yml

application.yml .主配置文件可以向下面这样写。

spring:profiles:active: dev

开发中最灵活的多环境配置

创建四个配置

application.yml
application-dev.yml
application-test.yml
application-prod.yml

主配置文件

application.yml #主配置文件

spring:profiles:active: ${ENV:dev}

注意:这里加了一个环境变量 ENV,在启动的时候进行注入,如果不写,默认启动 dev 环境

其他几个环境配置

application-dev.yml #开发环境的配置

server:port: 8091

application-test.yml #测试环境的配置

server:port: 8092

application-prod.yml #生产环境的配置

server:port: ${PORT:8093}

注:这三个环境配置,只在其中的 prod 环境使用了环境变量application-xxx.yml。 在后续使用prod的时候可以根据环境设置环境变量赋值配置。

相同的配置会覆盖 application.yml的配置

使用方式

1.在开发环境,可以写死测试环境,开发环境的配置,避免在开发传环境变量,激活什么的

2.在生产环境,可以通过环境变量 ENV=prod 激活生产环境的变量配置, idea 传递环境变量如下图
在这里插入图片描述

3.docker 环境启动时候通过 env 设置环境变量docker run -itd --env ENV=prod test.jar

4.docker-compose

在这里插入图片描述

配置文件拆分

配置文件支持将将配置进行拆分到不同的配置文件 如果多个环境拥有相同的配置,有两种解决办法

  • 提取到application.yml

  • 分离一个新的application-default_handler.yml

第一种情况可以针对 springboot 的一些通用配置

第二种适合一些业务的配置相关,比如项目中有一些自定义的配置,在三个环境都适合,就可以分离开

spring:profiles:active: ${ENV:dev}include: default_handler

只要 application-default_handler.yml 符合 yaml 的格式,项目中一样可以加载到

总结

  • 灵活使用环境变量启用不同的 profile
  • 灵活使用 spring.profiles.include 激活多个配置
  • 最后 application.properties 和 application.yml 是一样的使用方法
  • 如果你使用 nacos 也可以实现同样的效果,但是需要引入中间件,不推荐

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

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

相关文章

EXSI create datastore

文章目录 1. 简介2. 清空磁盘3. 删除表4. 创建database 1. 简介 在 ESXi 环境中创建数据存储(Datastore)的步骤如下: 登录 vSphere Web Client 打开 Web 浏览器,输入 ESXi 主机或 vCenter Server 的 IP 地址,使用有权限的账户登录。 在 ESXi 环境中创建数据存储(Datastore)…

Linux 关于NTP同步硬件时钟的可靠性验证

Linux关于NTP同步硬件时钟的可靠性验证 1. 常见的时钟类型1.1 系统时钟1.2 硬件时钟 2. 常见时钟同步方式2.1 ntpd服务2.1.1 推荐配置/etc/ntp.conf2.1.2 推荐配置/etc/sysconfig/ntpd 2.2 定时任务ntpdate2.3 ntp命令同步状态相关命令解读2.3.1 ntpq -pn解读2.3.2 ntpdate -u解…

SpringCloud Ribbon 负载均衡服务调用

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅,从传统的模块之间调用,一步步的升级为 SpringCloud 模块之间的调用,此篇文章为第三篇,即介绍 Ribbon 负载均衡服务调用 二、概述 2.1 Ribbon 是什么 Spring Cloud Ribbon…

OpenCV学习笔记(三)——对于图片的基本操作

目录 读取图片和显示图片 显示图片的大小 将图像设置为灰度图 将图片重新写回指定的地址 显示图片的尺寸 获取图片的类型 读取图片和显示图片 在OpenCV使用cv2.imread()来读取图片,例如,在D盘的Photo的文件夹中有一张图片名称为1的jpeg的图片&am…

无法使用debugger,debugger在项目中不生效,导致无法有效排查问题

debugger是浏览器提供的调试语句,其主要是通过停止JS的执行,相当于设置断点。它的使用方法很简单, 只需要在我们的JS语句中, 插入一行debugger; 即可。 在JS代码编写的过程中,我们都会通过浏览器的调试模式&#xff08…

微擎安装,卡在“安装微擎”界面

进入install.php,点击【在线安装】 下一步配置数据库,开始安装系统 然后显示进度条,进度条一闪而过 然后就没有进度条显示了,一直卡在这里 第一次等了好久, 删除目录下的文件,重装还是这样 再重启服务器&…

3D-Genome | Hi-C互作矩阵归一化指南

Hi-C 是一种基于测序的方法,用于分析全基因组染色质互作。它已广泛应用于研究各种生物学问题,如基因调控、染色质结构、基因组组装等。Hi-C 实验涉及一系列生物化学反应,可能会在输出中引入噪声。随后的数据分析也会产生影响最终输出噪声&…

Python Tkinter GUI 基本概念

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝如果停止,就是低谷&#xf…

node项目通过.env文件配置环境变量

https://www.npmjs.com/package/dotenv require(dotenv).config()console.log(process.env, process.env.apiKeyOnServer)我开发的chatgpt项目: https://chat.xutongbao.top

Imagination:RISC-V CPU的重要力量

根据SHD集团最近发布的报告显示,RISC-V正全速发展中。通过分析从2021年到2030年这十年间RISC-V核在不同应用和功能领域的潜在市场,作者Rich Wawrzyniak得出结论称,到2030年,22.3%的SoC将包含RISC-V CPU,RISC-V的收入预…

Docker网络+原理+link+自定义网络

目录 一、理解Docker网络 1.1 运行tomcat容器 1.2 查看容器内部网络地址 1.3 测试连通性 二、原理 2.1 查看网卡信息 2.2 再启动一个容器测试网卡 2.3 测试tomcat01 和tomcat02是否可以ping通 2.4 只要删除容器,对应网桥一对就没了 2.5 结论 三、…

蓝牙耳机潜水时可以用吗?适合潜水的四大游泳耳机分享

在科技日新月异的今天,我们越来越依赖各种电子设备来丰富我们的生活。无论是运动、工作还是休闲娱乐,耳机都成为了我们不可或缺的伙伴之一。然而,当谈到水上活动时,许多人可能会对蓝牙耳机是否能在水下使用感到困惑。虽然市面上有…

SpringBoot第三课-日志

1.日志分类 2.默认使用 默认使用logback与slf4j作为底层默认日志 但是由于日志是系统启动就需要使用,所以与其他的自动配置不同,自动配置是后来使用的,而日志是使用监听器配置好的。 ApplicationListener 3.日志级别 1.级别介绍 SpringB…

使用采购管理软件构建更高效的采购模式

采购流程是企业整个采购部门的关键要素。无论企业规模大小,构建采购流程的模式都将直接影响企业控制成本、管理风险和保持流程弹性的能力。 下面我们将解释采购模式的类型、优缺点,以及如何确定哪种模式最适合你的采购部门。 集中采购的优缺点 在集中采…

Windows的自动更新和自带的杀毒软件怎么弄掉!

关闭Windows系统更新 Windows系统更新是为了保持设备的平稳和安全运行,保持操作系统安全、稳定及获取新功能修复已知问题并修补安全漏洞的重要过程。如果您想要临时或永久关闭Windows系统的自动更新,可以采用以下几种方式。不过,请务必意识到,禁用系统更新可能会导致您的系…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(三)

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(一) Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(二) 八、板级验证 1.验证内容 通过电脑…

5. Java内存模型JMM

文章目录 计算机硬件存储体系基于计算机存储结构的 JMM Java 内存模型 JavaMemoryModelJMM规范下的三大特性原子性可见性有序性 多线程对变量的读写过程读取过程 多线程先行发生原则 happens-beforex,y 的 case 说明happens-before 原则说明happens-before 大原则happens-befor…

如何转行成为产品经理?

转行NPDP也是很合适的一条发展路径,之后从事新产品开发相关工作~ 一、什么是NPDP? NPDP 是产品经理国际资格认证,美国产品开发与管理协会(PDMA)发起的,是目前国际公认的唯一的新产品开发专业认证&#xff…

fasta文件与fastq文件相互转化Python脚本

fa文件与fq文件互相转换 今天分享的内容是fasta文件与fastq文件的基本知识,以及通过Python实现两者互相转换的方法。 测序数据公司给的格式通常是fq.gz,也就是fastq文件,计算机的角度来说,生物的序列属于一种字符串,就…

CVHub | 万字长文带你全面解读视觉大模型(建议收藏!)

本文来源公众号“CVHub”,仅用于学术分享,侵权删,干货满满。 原文链接:万字长文带你全面解读视觉大模型 0 导读 众所周知,视觉系统对于理解和推理视觉场景的组成特性至关重要。这个领域的挑战在于对象之间的复杂关系…