Springboot多环境开发

news2024/11/19 0:44:25

文章目录

  • 一. 前言
  • 二. 单文件版多环境配置
  • 三. 多文件版多环境配置
  • 四. 多环境开发配置技巧
  • 五. 多环境配置分组管理


一. 前言

在日常开发中我们使用的环境可能会不一样,比如开发环境测试环境生产环境,那么这些环境对应的配置也会不一样,如果环境一切换就要更改一套新的配置那么确实过于复杂了,因此Springboot也给我们提供解决方案。

二. 单文件版多环境配置

在单个application.yml配置文件中我们可以使用 --- 分割环境配置,那么如何区分环境呢? 在单个配置文件中我们可以使用 profiles 为环境配置命名,如下案例:

# 应用环境
# 公共配置
spring:
  profiles:
    active: dev # 要使用的环境配置
---
# 设置环境
# 生产环境
spring:
  profiles: pro  # 环境名
server:
  port: 80
---
# 开发环境
spring:
  profiles: dev
server:
  port: 81
---
# 测试环境  新写法跟上面的效果一样
spring:
  config:
    activate:
      on-profile: test # 环境名
server:
  port: 82

启动时Springboot会选择指定的环境配置,其他的环境配置将会被忽略,可以在公共配置中写上环境中一样的配置这样可以减少代码的冗余,在修改配置时也会带来极大的便利吗,但是其实这种配置方式比较过时,下面给大家介绍比较流行的做法。

三. 多文件版多环境配置

上面小编介绍了单文件版的多环境开发,但是这种配置方式对一些配置的私密性不是很友好,代码量都叠加在一个文件这样也不方便代码的阅读,因此有了我们下面要介绍的多文件版环境配置。
[配置文件名]-[环境名].[文件后缀] 的方式命名配置文件,可以在resources目录下创建多个这样的文件如下:
在这里插入图片描述
以 application.yml 作为我们的主配置文件,其余的配置文件作为我们的环境配置文件,将不同的环境配置在其中,对于主配置文件:

# 应用环境
spring:
  profiles:
    active: test #选择的环境配置

通过active属性指定生效的环境配置,其实这种方式就是将上一种方式在文件的基础上进行拆分。这样在开发完成后我们开发人员只要将主配置文件修改好,再由项目经理添加生产的配置文件即可,对一些私密的信息起到了很好的保护作用。

四. 多环境开发配置技巧

在工作中我们对换机的区分不单单可以针对环境,我们还可以以功能来进行环境的区分,如数据库相关的配置文件起一个名字 application-devDB.yml ,缓存相关的配置文件起一个名字application-devRedis.yml 等等。
而在进行指定这些配置时使用include)属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔,如下:

spring:
	profiles:
		active:dev
		include:devDB,devRedis,devMVC

在这里插入图片描述
对于include属性的属性配置顺序,配置的越前面的权重越高,如果属性冲突以权重更高的配置为主

五. 多环境配置分组管理

但是在Springboot2.4后其实上面这种配置方式也有点过时了,2.4版本后将include属性换成了group属性,通过分组来进行多环境的配置。

spring:
  profiles:
    active: dev  # 指定组名决定生效的环境
    group:
      "dev": devDB,devMVC  # 设置分组 这里dev是组名
      "pro": devDB,proMVC

在开发的过程中有时我们会通过配置maven的配置文件来实现开发时的环境管理,其实Springboot是依赖于Maven来进行启动的。

<!--设置多环境  maven 和springboot的环境重复的话 以maven为主-->
    <profiles>
        <profile>
            <id>env_dev</id>
            <properties>
                <profile.active>dev</profile.active>
            </properties>
		<!--设置生效环境-->
            <activation>
		<!-- 设置默认启动使用的环境-->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>env_pro</id>
            <properties>
                <profile.active>pro</profile.active>
            </properties>
        </profile>
    </profiles>

读取Maven依赖配置文件中的开发环境,实现POM文件和Springboot配置文件的一致性。

spring:
  profiles:
    active: @profile.active@ #读取maven里面配置的启动环境
    group:
      "dev": devDB,devMVC
      "pro": devDB,proMVC

这样就是实现了Maven和Springboot的环境统一,有时因为IDEA缓存的问题会出现配置不生效我们可以执行一下下Maven生命周期中的compile重新编译加载配置文件的内容,再重新启动项目。
在这里插入图片描述

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

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

相关文章

【计算机视觉】数据获取、数据标注、数据增强的概念简介

觉得有帮助麻烦点赞关注收藏~~~ 基于深度学习的视频分析算法是依赖于数据训练的&#xff0c;数据是深度学习的主要原料&#xff0c;对于算法性能的提升是非常重要的。本章将重点介绍数据的获取、标注、增强及处理方法。 一、数据获取 训练数据的来源主要包括网上公开数据库和…

Redis实现短信登录

文章目录一、基于Session实现登录二、基于Redis实现共享Session实现登录一、基于Session实现登录 ---------------------------------------------------Controller PostMapping("code") public Result sendCode(RequestParam("phone") String phone, Http…

JavaScript进阶教程——面向对象、原型对象、this关键字、bind appl call方法

文章目录面向对象ES2015的面向对象语法&#xff1a;ES5的面向对象语法&#xff1a;原型对象原型链Object对象的原型this关键字**指向调用方法的对象&#xff1a;****构造函数&#xff1a;**触发事件指向全局对象&#xff1a;箭头函数总结bind appl call方法call的用法参数apply…

【计算机图形学入门】笔记4:变换(模型、视图、投影)

目录04变换&#xff08;模型、视图、投影&#xff09;1.使用齐次坐标表示的三维变换2.view/Camera 视图变换3.Projection 投影变换1.Orthographic projection 正交投影2.Perspective projection 透视投影 ——更适合人眼成像&#xff08;近大远小&#xff0c;鸽子为什么这么大&…

AlphaControls 读取存贮数据VCL OnChange事件的处理

AlphaControls 读取存贮数据VCL OnChange事件的处理 AlphaControls控件&#xff0c;窗口时显示&#xff0c;对于VCL控件的处理&#xff0c;需要通过调用皮肤模板重新画出来。因此&#xff0c;在窗口的显示过程中&#xff0c;对VCL控件的数据装载&#xff08;变更&#x…

从获评毕马威中国领先地产科技50强 看贝壳的长期主义

11月9日&#xff0c;在上海进博会现场&#xff0c;毕马威发布了2022年度&#xff08;第二届&#xff09;“毕马威中国领先地产科技企业50”报告&#xff0c;并正式发布了年度毕马威中国领先地产科技企业50榜及地产科技新锐企业榜。作为国内居住产业数字服务平台的贝壳上榜。 众…

前辈给的 Spring Cloud 与 Docker 微服务实战,挽救了要被辞退的我

前言 还记得那天天气阴冷&#xff0c;整个人心都是拔凉拔凉的&#xff1b;原因是因为领导找我聊了一下&#xff0c;委婉地说觉得我的技术不太行&#xff0c;能力不突出&#xff1b;要么自己做出改变&#xff0c;要么选择离开。 说实话&#xff0c;我是有点难过的&#xff0c;…

Lambda完整学习指南

什么是Lambda表达式 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java La…

大学生HTML作业篮球网页 HTML作业篮球网页期末作业 HTML+CSS篮球网页 HTML学生作业体育篮球网页

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

ARS系列毫米波雷达技术一览

近年来&#xff0c;自动驾驶成为了当下最热门的话题。随着自动驾驶技术的发展&#xff0c;作为其关键传感器之一的毫米波雷达&#xff0c;也得到了广泛关注。但就目前来看&#xff0c;海外巨头公司主导着全球毫米波雷达产业的发展&#xff0c;其中&#xff0c;大陆ARS540更以九…

吊打面试官,聊聊:Java中String对象的大小?(史上最全)

下面是一个常见的Java 面试题&#xff1a; 聊聊&#xff1a;Java中String对象的大小&#xff1f; 首先&#xff0c;看看空String占用的空间 当前内存大小是在默认开启压缩指针的条件下 对象头 12char[]数组引用 4int 类型 hash数据大小 4loss due to the next object alignm…

MacOS好用的系统清理工具CleanMyMac有哪些特点功能?

怎么样为Mac选择一款专业靠谱的清理工具&#xff1f;需要满足那些功能呢&#xff1f;对于大多数的新手用户可能并不知道如何来清理Mac系统&#xff0c;当然也不知道在众多清理工具中如何选择。选择一款清理工具最重要的是它的性能如何&#xff0c;能不能有效的帮助用户清理系统…

[附源码]JAVA毕业设计小说阅读网站(系统+LW)

[附源码]JAVA毕业设计小说阅读网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

听说你还不了解二叉树?赶紧进来轻松解决

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; 数据结构 | C语言 &#x1f38a;每篇一句&#xff1a; 图片来源 Only by self-respect will you compel others to respect you. 只有自尊才能迫使他人尊敬你。 文章目录&#x1f4d8;前言&#x1f4d8;正文…

java的vo实体类字段和返回前端接收的字段大小写不一致

java的vo实体类字段和返回前端接收的字段不一致 后台的vo字段和前端接收到的出现大小写一直的情况 例如: 后台字段 /** a_lwa */private String aLwa;前端实际接收到的 这是由于使用lombok插件导致的 解决办法 实体类添加注解强制绑定 /** a_lwa */JsonProperty("aLwa&…

【JavaWeb开发-Servlet】day07-学生成绩管理系统-实现登录注册功能

目录 一、登录功能 1、实现登录页面 ①新建一张登录表&#xff1a;login ②插入一条测试数据 ③新建一个login.jsp登录界面 ④此表的实体Teacher类&#xff1a; ⑤ 然后在写一个dao方法&#xff0c;需要根据用户名查询登录表中的用户信息 ⑥业务层中我们直接调用dao层方法 ⑦在…

【负荷预测】基于灰色理论负荷预测的应用研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

南京邮电大学编译原理实验一(词法分析器的构造)

文章目录一、 实验目的和要求二、实验环境(实验设备)三、实验原理及内容&#xff08;一&#xff09;设计概要1、C语言子集2、单词及编码3、状态转换图&#xff08;二&#xff09;实现分析&#xff08;三&#xff09;结果分析四、实验小结&#xff08;包括问题和解决方法、心得体…

文本纠错--N-gram--Macbert模型的调用以及对返回结果的处理

文本根据词典进行纠错 输入一段可能带有错误信息的文字&#xff0c; 通过词典来检测其中可能错误的词。 例如&#xff1a;有句子如下&#xff1a;中央人民政府驻澳门特别行政区联络办公室1日在机关大楼设灵堂    有词典如下&#xff1a;中国人民&#xff0c;中央人民&#x…

红帽曹衡康:开源是企业数字化转型的机遇

在数据成为企业核心资产的今天&#xff0c;为了更好地降本增效&#xff0c;实现业务创新和增长&#xff0c;越来越多的企业都开启了数字化转型之路。然而对于绝大多数企业来说&#xff0c;这条转型之路都并非一帆风顺。事实上&#xff0c;数字化转型在为企业开启更多机遇的同时…