Springboot多环境开发



一. 前言

在日常开发中我们使用的环境可能会不一样,比如开发环境测试环境生产环境,那么这些环境对应的配置也会不一样,如果环境一切换就要更改一套新的配置那么确实过于复杂了,因此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重新编译加载配置文件的内容,再重新启动项目。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值