03、多环境开发
3.1、多环境开发(YAML版)
3.1.1、单文件配置格式
1、设置多环境并指定启动环境
2、推荐使用新的格式
小结:
- 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境
yaml
格式中设置多环境使用---
区分环境设置边界- 每种环境的区别在于加载的配置属性不同
- 启用某种环境时需要指定启动时使用该环境
3.1.2、多配置文件格式
1、问题:
多个环境写在一个配置文件中不太适用
2、多文件配置格式
① 主启动配置文件application.yml
#应用环境
spring:
profiles:
active: test
② 环境分类配置文件application-pro.yml
——生产环境
server:
port: 8080
③ 环境分类配置文件application-dev.yml
——开发环境
server:
port: 8081
④ 环境分类配置文件application-test.yml
——测试环境
server:
port: 8082
小结:
- 可以使用独立配置文件定义环境属性
- 独立配置文件便于线上系统维护更新并保障系统安全性
3.2、多环境开发(properties版)
① 主启动配置文件application.properties
spring.profiles.active=dev
② 环境分类配置文件application-pro.properties
——生产环境
server.port=9080
③ 环境分类配置文件application-dev.properties
——开发环境
server.port=9081
④ 环境分类配置文件application-test.properties
——测试环境
server.port=9082
注意事项:
properties
文件多环境配置仅支持多文件格式,无合并的单一文件格式
3.3、多环境开发独立配置文件书写技巧
1、书写技巧(一)
- 主配置文件中设置公共配置(全局)
- 环境分类配置文件中常用于设置冲突属性(局部)
2、书写技巧(二)
-
根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下:
application-devDB.yml
application-devRedis.yml
application-devMVC.yml
-
使用
include
属性在激活指定环境的情况下,同时对多个环境进行加载使其生效,多个环境间使用逗号分隔
spring:
profiles:
active: dev
include: devMVC,devDB
注意事项:
- 当主环境dev与其他环境有相同属性时,主环境属性生效;其他环境中有相同属性时,最后加载的环境属性生效
- 后加载的环境属性会覆盖先加载的环境属性,主环境dev最后加载
- 从
Spring2.4
版开始使用group
属性替代include
属性,降低了配置书写量 - 使用
group
属性定义多种主环境与子环境的包含关系
spring:
profiles:
active: dev
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
注意事项:
- 此时,加载顺序是按序加载
- 多环境开发使用
group
属性设置配置文件分组,便于线上维护管理
3.4、多环境开发控制
Maven
与SpringBoot
多环境发生冲突的时候,应该让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>
<profile>
<id>env_test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
②SpringBoot
中引用Maven
属性
spring:
profiles:
active: @profile.active@
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
③执行Maven
打包指令,并在生成的boot
打包文件.jar
文件中查看对应信息
小结:
- 当
Maven
与SpringBoot
同时对多环境进行控制时,以Maven
为主,SpringBoot
使用@..@
占位符读取Maven
对应的配置属性值- 基于
SpringBoot
读取Maven
配置属性的前提下,如果在Idea
下测试工程时pom.xml
每次更新需要手动compile
方可生效