【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.hqwc.cn/news/521923.html

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

相关文章

经典定时任务结构设计:时间轮(Timing Wheel)案例和实现原理

1、直接上案例 import io.netty.util.HashedWheelTimer; import io.netty.util.Timeout; import io.netty.util.TimerTask; import lombok.extern.log4j.Log4j2;import java.util.concurrent.TimeUnit;/*** ClassName Test* Author will* Date 2024/3/8 16:31* Version 1.0.1*…

基于React低代码平台开发:直击最新应用构建

文章目录 前言一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践:基于React》编辑推荐内容简介作者简介目录前言为什么要写这本书读者对象如何阅读本书 前言 随着数字化转型的…

2.DOM-事件基础(注册事件、tab栏切换)(案例:注册、轮播图)

案例 注册事件 <!-- //disabled默认情况用户不能点击 --><input type"button" value"我已阅读用户协议(5)" disabled><script>// 分析&#xff1a;// 1.修改标签中的文字内容// 2.定时器// 3.修改标签的disabled属性// 4.清除定时器// …

许多人可能还不了解这个信息差:美赛的第一批 EI 已经录用,不用再犹豫啦

格局打开&#xff0c;美赛论文转学术论文发表 &#x1f680;&#x1f680; 各位同学&#xff0c;美赛已经结束了一段时间&#xff0c;你们是否还在焦急地等待最终成绩的公布&#xff1f;一些有远见的同学已经提前收到了一份喜讯&#xff1a;他们的美赛论文已被转化为学术论文并…

贪吃蛇c++

#include<bits/stdc.h> #include<conio.h> // 用于获取按键输入using namespace std;const int width 20; const int height 20; int x, y, fruitX, fruitY, score; int tailX[100], tailY[100]; // 蛇的身体位置数组 int nTail; // 蛇的长度 enum eDirecton { S…

【探索Linux】—— 强大的命令行工具 P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )

阅读导航 引言一、socket 常见API表二、函数详细介绍01. socket()02. bind()03. listen()04. accept()05. connect()06. send()07. recv()08. close()09. select()10. getaddrinfo()11. sendto()12. recvfrom()13. setsockopt()14. getsockopt()15. shutdown()16. inet_pton()1…

接口自动化测试丨如何处理 Header cookie

Cookie&#xff08;复数形态&#xff1a;Cookies&#xff09;是某些网站为了辨别用户身份而储存在用户本地终端上的数据。在接口测试过程中&#xff0c;如果网站采取了 Cookie 认证的方式&#xff0c;那么发送的请求需要附带 Cookie&#xff0c;才会得到正常的响应的结果。接口…

【2024.03.05】定时执行专家 V7.1 发布 - TimingExecutor V7.1 Release

目录 ▉ 软件介绍 ▉ 新版本 V7.1 下载地址 ▉ V7.1 新功能 ▼2024-03-03 V7.1 - 更新日志 ▉ V7.0 新UI设计 ▉ 软件介绍 《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式&#x…

四 笔记本centos7.9 隧道代理

上一章 内网穿透已经可以用公网连接服务器了三 笔记本 centos7.9 内网穿透-CSDN博客 现在数据库不暴露公网的情况下怎么连接mysql 1 mysql 已经安装完毕了,这里不在介绍安装步骤 2 连接公网ip服务器或者内网ip服务器 3 配置隧道监听端口 4:测试连接

间隔5分钟执行1次Python脚本设置步骤 —— 定时执行专家

《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件&#xff0c;用于在 Windows 系统上定时执行各种任务&#xff0c;包括执行脚本或程序。 下面是使用 "定时执行专家" 软件设置定时执行 Python 脚本的步骤&#xff1a; 步骤 1: 设置 P…

Linux内存映射

目录 背景 一、什么是内存映射&#xff1f; 二、mman函数 1.权限问题 2.总线错误 3.内存权限 4.读文件内容 5.映射与文件 6.非法参数错误 7.偏移量大小 8.映射内存大小 8.1 申请6k,访问5k 8.2 申请2k&#xff0c;访问3k 8.3 返回值检查 三、内存映射实现 四…

【Unity】分拣机的数字双胞胎集成到Unity3D开发平台中

Unity HMI 一、前言 该项目的重点是通过OPC UA进行客户端-服务器通信的简单演示&#xff0c;该演示在Unity3D中实现&#xff08;服务器- B&R Automation PLC&#xff0c;客户端- Unity3D&#xff09;。该项目展示了数字孪生的分拣机与一些额外的功能。该应用程序使用多线程…