springboot多环境开发

springboot多环境开发介绍

在做springboot开发的时候有多种环境,如开发环境,测试环境,生产环境等,每个环境的yaml配置不同,如端口号等。这就需要针对不同的环境配置不同的属性。具体方法有单一文件版,多文件版等。

1.yaml单一文件版

单一文件很简单,用三个短横线隔开不同环境即可,公共的环境配置放在最上面

spring:
  profiles:
    active: pro
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: 1234

mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
---

spring:
  config:
    activate:
      on-profile: dev
server:
  port: 81
---

spring:
  config:
    activate:
      on-profile: pro
server:
  port: 80
---

spring:
  config:
    activate:
      on-profile: test
server:
  port: 82

2.多文件版

2.1 yaml多文件版

单一文件实现多环境开发虽然图一时之快,但是维护起来是有麻烦的,也不合理。将每个环境定义为一个文件,则只需要关注该阶段的环境文件即可,实现了去耦合。实现起来也很简单,将每一部分放在一个文件即可,命名一般是“application-***.yml”。目录结构和文件内容如下所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
值得注意的主配置文件指定是根据文件名的后缀诸如“dev”来判断的。

2.2 properties多文件版

properties多文件版和yaml多文件版几乎一样,唯一的区别是properties的格式略有不同,且properties仅支持多文件版。具体代码内容如下:
主配置文件

	spring.profiles.active=pro

环境配置文件
application-pro.properties

server.port=80

application-dev.properties

server.port=81

application-test.properties

server.port=82

3.多环境分组管理

多环境不仅按周期分为dev,pro,test等,在每个周期还会按功能分为不同的配置文件,目录结构如下入所示
在这里插入图片描述
这时候只需要在主配值文件中使用group属性即可实现融合每个周期的所有配置,代码如下:

spring:
	profiles:
    	active: dev
        group:
        	"dev": devDB,devMVC
      		"pro": proDB,proMVC
      		"test": testRedis

4.多环境开发控制

上面已经实现的多环境开发的全部功能,但是有一个问题是上面所有的配置都是springboot的yml或者properties文件实现的,maven也可以设置多环境,这就产生了冲突。那么以谁为主呢?答案是maven。maven是管理整个工程的,项目的各种依赖到生命周期都由它管理,所以Springboot应该听maven的。那么接下来只需要用Springboot读取maven的配置即可,代码如下:
pom.xml文件中配置多环境

<profiles>
    <profile>
    	//每个环境都要由一个id,可以随意取,但是最好要见名知意
        <id>env_dev</id>
        <properties>
        	//这里就是环境名称了,springboot读取的就是这里
            <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>

SpringBoot中读取maven设置值(主配置文件中)

spring:
	profiles:
		//这里即可引用maven生效的环境名
    	active: @profile.active@
        group:
        	"dev": devDB,devMVC
      		"pro": proDB,proMVC
      		"test": testRedis

打包后可以看到主配值文件中生效的是dev
在这里插入图片描述
值得一提的是旧版本的idea有一个bug,就是运行后读取到的配置名是之前缓存的,这个bug在新版本的idea中已经解决。如果出现这种问题,解决方案是用maven运行工程的compile生命周期后再运行即可。
在这里插入图片描述

5.总结

springboot多环境开发总的来说就是配置一个主文件application.yml 然后按周期分为若干个组,然后每个组有一个主文件和多个功能文件,命名方式都是 application-###.yml 格式。在主配置文件中用active属性选择组的主文件,group属性则将每个组按照键值对的形式表示出来即可。如果maven也有多环境配置,则用 @profile.active@ 读取。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值