摘要:多环境开发需要设置多种开发环境,比如生产环境pro,开发环境dev,测试环境test
2.3 多环境开发
多环境开发需要设置若干种常用的环境,开发,生产,测试
Yaml格式中设置多环境使用—区分环境设置边界
每种环境区别在于加载的配置环境属性不同
启动某种环境时需要指定启动时使用该环境
1 | # 应用环境 |
多环境开发容易出现安全隐患
若在一个配置文件中配置多个数据库连接,容易造成密码泄露
暴露了密码
多环境开发文件版 yaml
将四个不同的环境分为四个文件
主启动配置文件application.yml
1
2
3
4
5# 应用环境
# -----
spring:
profiles:
active: test环境分类配置文件application-pro.yml
1
2server:
port: 80环境分类配置文件application-dev.yml
1
2server:
port: 81环境分类配置文件application-test.yml
1
2server:
port: 82
idea会根据文件的命名来寻找所设定的配置环境
主配置文件中设置公共配置(全局)
环境分类配置文件中常用于设置冲突属性(局部)
独立配置文件便于线上系统维护更新并保障系统安全性
多环境开发文件版 properties
主启动配置文件application.properties
1
2
3# 应用环境
# -----
spring.profiles.active=test环境分类配置文件application-pro.yml
1
server.port=80
环境分类配置文件application-dev.yml
1
server.port=81
环境分类配置文件application-test.yml
1
server.port=82
properties文件多环境配置仅支持多文件格式,没有合并的多环境写法
多环境分组group开发
根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下
application-devDB.yml
application-devRedis.yml
application-devMVC.yml
使用group替代include
使用group属性定义多种主环境与子环境的包含关系
1 | spring: |
注意:配置文件中当有相同作用的属性的时候,后面加载的配置会覆盖前面的配置
多环境的开发控制
若我们的项目的maven springboot之间的环境产生冲突
想清楚一个问题,是springboot 基于 maven 运行,还是 maven 基于springboot 运行
答案是 springboot 基于 maven 运行
所以我们主要对maven 进行多环境的配置,实现两个环境的统一
maven 添加profiles标签–id–profile.active(用来让boot程序读取),spring boot使用@...@占位符读取maven对应的配置属性值
这个配置使用了activation->activeByDefault 来设定使用哪一个变量供给boot程序使用
1
2
3<activation>
<activeByDefault>true</activeByDefault>
</activation>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<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>1
2
3
4
5
6
7
8
9
10
11# 应用环境
# -----
spring:
profiles:
active: @profile.active@
group:
"dev": devDB,devMVC
"pro": devDB,devMVC基于springboot读取maven配置属性的前提下,如果在idea下测试工程时pom.xml每次更新需要手动complie方可生效