SpringBoot多环境开发

博客主页:不会压弯的小飞侠
✨欢迎关注:点赞收藏⭐留言✒
✨系列专栏:SpringBoot专栏(每日更新)
✨如果觉得博主的文章还不错的话,请三连支持一下博主。
欢迎大佬指正,一起学习!一起加油!

SpringBoot多环境开发_第1张图片


日常开发中至少有三个环境,分别是开发环境(dev),测试环境(test),生产环境(prod),不同的环境的各种配置都不相同,手动改配置麻烦且容易出错,如何管理不同环境的配置参数。


目录

  • 多环境开发(yaml版)
  • 多环境开发(yaml版)多配置文件格式
    • 主启动配置文件
    • 环境分类配置文件
  • 多环境开发(properties版)多配置文件格式
    • 主启动配置文件
    • 环境分类配置文件
  • 多环境开发独立配置
  • group属性替代include属性
  • maven与Springboot多环境兼容


多环境开发(yaml版)

新建一个模板
编写yml文件

# 应用名称
spring:
  profiles:
    active: test
---
#设置环境
#生产环境
spring:
  profiles: pro
server:
  port: 80
---
#开发环境
spring:
  profiles: dev
server:
  port: 81

---
#测试环境
spring:
  profiles:
    active:
      on-profie: test
server:
  port: 82

运行测试
SpringBoot多环境开发_第2张图片

⭐⭐⭐注意:

  • active: test用来区分环境。
  • profile属性过时了,要用group格式
spring:
  profiles:
    active:
      on-profie: test
server:
  port: 82
  • 启动指定环境
spring:
  profiles:
    active: test
  • 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
  • yaml格式中设置多环境使用—区分环境设置边界
  • 每种环境的区别在于加载的配置属性不同
  • 启用某种环境时需要指定启动时使用该环境

多环境开发(yaml版)多配置文件格式

主启动配置文件

application.yml

spring:
  profiles:
    active: test

环境分类配置文件

application-pro.yml

server:
  port: 8082

application-dev.yml

server:
  port: 8081

application-test.yml

server:
  port: 8083

测试:
SpringBoot多环境开发_第3张图片
⭐⭐⭐注意:

  • 主配置文件中设置公共配置(全局)
  • 环境分类配置文件中用于设置冲突属性(局部)

多环境开发(properties版)多配置文件格式

⭐⭐⭐注意:格式与yaml一致。

主启动配置文件

application.properties

spring.profiles.active=pro

环境分类配置文件

application-pro.properties

server.port=92

application-dev.properties

server.port=91

application-test.properties

server.port=93

测试:
SpringBoot多环境开发_第4张图片

多环境开发独立配置

  • 根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
    application-dev.yml
server:
  port: 80

application-devDB.yml

server:
  port: 81

application-devMVC.yml

server:
  servlet:
    context-path: /ebank
  port: 82
  • 使用include属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
    application.yml
spring:
  profiles:
    active: dev
    include: devDB,devMVC

⭐⭐⭐**注意:**当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效。

测试
SpringBoot多环境开发_第5张图片

group属性替代include属性

  • 从SpringBoot2.4版开始使用group属性替代include属性,降低了配置书写量
  • 使用group属性定义多种主环境与子环境的包含关系

application.yml

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

测试
SpringBoot多环境开发_第6张图片

⭐⭐⭐**注意:

  • 当主环境dev与其他环境有相同的属性时,主环境属性生效,其他环境中有相同的属性时最后加载的环境属性生效。
  • 多环境开发使用group属性配置文件分组,便于线上维护管理。

maven与Springboot多环境兼容

在Maven中设置多环境属性

<!--    设置多环境-->
	<profiles>
		<profile>
			<id>env_dev</id>
			<properties>
				<profile.active>dev</profile.active>
			</properties>
			<!--            默认启动dev-->
			<!--<activation>
				<activeByDefault>true</activeByDefault>
			</activation>-->
		</profile>

		<profile>
			<id>env_pro</id>
			<properties>
				<profile.active>pro</profile.active>
			</properties>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
	</profiles>
	<build>

application.yml

spring:
  profiles:
    active: @profile.active@
    group:
      "dev": devDB,devMVC
      "pro": proDB,proMVC
  • 当maven与SpringBoot同时对多环境进行控制时,以Maven为主SpringBoot使用@…@占位符读取Maven对应的属性。

clean项目重新Package
打包详细步骤:点击直接查看
测试
SpringBoot多环境开发_第7张图片

你可能感兴趣的