多环境开发

多环境开发(yaml单一文件版)

我们可以针对不同的环境设置不同的配置

如:

# 使用的环境
spring:
  profiles:
    active: pro
---
# 第一个环境
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81
---
# 第二个环境
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 82
---
# 第三个环境
spring:
  config:
    activate:
      on-profile: test
server:
  port: 83

如上,设置了三个不同的环境,目前使用的时第一个环境

使用环境和配置环境之间都需要使用三个-来分隔

定义环境的格式:

spring:
  config:
    activate:
      on-profile: pro # 这里是该环境的名称
# 这里是该环境的具体配置

使用环境的格式:

spring:
  profiles:
    active: pro # 这里的名称为使用的环境的名称

一般情况下,配置的各种环境在yml文件的最后面,且不同环境配置的一般是冲突的信息

所有环境共有的相同的配置可以直接配置在最上面,可以正常使用

多环境开发(yaml多文件版)

如果各种环境的配置都放在同一个文件下,那么在安全性和维护方面都会比较困难

因此可以将不同环境的配置放在不同的tml文件中

文件的命名规则:application-环境名.yml

如:

主配置文件

spring:
    profiles:
        active: pro     # 启动pro

环境配置文件

application-rop.yaml

server:
    port: 80

application-dev.yaml

server:
    port: 81


如上,主配置文件中设置公共配置,环境配置文件中设置冲突属性

多环境开发(properties多文件版)

properties类型的多环境开发基本和yml一样,只需要在格式上进行更改

主配置文件

spring.profiles.active=pro

环境配置文件

application-pro.properties

server.port=80

application-dev.properties

server.port=81

注:properties文件多环境配置仅支持多文件格式

多环境开发独立配置文件书写技巧

在开发中,一般会将不同功能的配置配置到不同的文件中

将所有的配置根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

  • application-devDB.yml
  • application-devRedis.yml
  • application-devMVC.yml

即application-环境名 + 功能 + .yml

之后就可以在主配置文件中使用include属性激活指定环境,同时对多个环境进行加载使其生效,多个环境之间用逗号分隔

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

如上代表加载dev环境的同时,加载对应的3组配置

若这些环境中存在相同的属性,则后加载的会覆盖先加载的,且dev会最后加载

加载顺序:devDB->devRedis->devMVC->dev

即当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效

在SpringBoot2.4版本,更新了一个叫做group的属性可以代替include属性

group属性可以将一些环境设置为一个环境组

spring:
	profiles:
    	active: dev
        group:
        	"dev": devDB,devRedis,devMVC
      		"pro": proDB,proRedis,proMVC
      		"test": testDB,testRedis,testMVC

如上,最终加载的就是dev环境和另外3组配置

注:

1.使用group时,若这些环境中存在相同的属性,仍为后加载的覆盖先加载的

但是此时主环境dev会变成最先加载的

加载顺序:dev->devDB->devRedis->devMVC

2.分组的环境命名是随意的,如pro组可以有devDB:

spring:
	profiles:
    	active: dev
        group:
        	"dev": devDB,devRedis,devMVC
      		"pro": devDB,proRedis,proMVC

如上,可以正常运行,因此group组中的环境可以随意组合

多环境开发控制

在开发中,Maven也有多环境的开发

那么当Maven的环境和SpringBoot环境冲突时,由于SpringBoot是依靠maven来管理工程的,因此SpringBoot的环境应该跟随Maven的环境

要实现上述情况,应:

maven中设置多环境(使用属性方式区分环境)

<build>
  <resources>
    <resource>
      <!-- 指定配置文件所在的resource目录 -->
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>



<profiles>
  <profile>
    <id>env_dev</id>
    <properties>
      <environment>dev</environment>
    </properties>
    <activation>
      <activeByDefault>true</activeByDefault>	<!--默认启动环境-->
    </activation>
  </profile>
  <profile>
    <id>env_pro</id>
    <properties>
      <environment>pro</environment>
    </properties>
    <activation>
      <activeByDefault>false</activeByDefault>	<!--默认启动环境-->
    </activation>
  </profile>
</profiles>

如上,需要在build标签指定配置文件所在的resource目录

然后再pom.xml中配置多个环境

SpringBoot中读取maven设置值

spring:
  profiles:
    active: @environment@
    group:
      "dev": devDB,devMVC
      "pro": devDB,proMVC

需要使用 "@属性名@" 的形式来获取maven中配置的属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值