文章目录
- 多环境启动
- 多环境启动基本格式
- 多环境启动命令格式
- 多环境启动的兼容性
多环境启动
多环境启动基本格式
我们在开发中和上线后的环境中, 有些配置文件的值是不相同的, 但是当项目上线后我们肯定是不能修改配置文件的, 于是我们需要针对不同的环境进行不同的配置
例如下面, 在不同环境下, 数据库的连接信息是不同的
我们需要配置多环境开发, 让项目在不同的环境下切换不同的配置信息
方便理解, 这里我对三种环境设置不同的端口号, 如果端口号发生变化就说明切换环境成功:
application.yml文件中, 设置三种环境, 环境间使用
---
进行分隔
server:
port: 80
---
server:
port: 81
---
server:
port: 82
通过spring下的profiles属性, 分别设置生产环境、开发环境和测试环境
# 开发环境
spring:
profiles: dev
server:
port: 80
---
# 生产环境
spring:
profiles: pro
server:
port: 81
---
#测试环境
spring:
profiles: test
server:
port: 82
在通过spring下的profiles下的active属性设置当前的运行环境
# 设置启用的环境
spring:
profiles:
active: dev
---
# 开发环境
spring:
profiles: dev
server:
port: 80
---
# 生产环境
spring:
profiles: pro
server:
port: 81
---
#测试环境
spring:
profiles: test
server:
port: 82
多环境开发我们就配置完成了, 但是我们发现profiles是被打了删除线的, 说明是过时的格式
当前推荐的格式如下
# 设置启用的环境
spring:
profiles:
active: test
---
# 开发环境
spring:
config:
activate:
on-profile: dev
server:
port: 80
---
# 生产环境
spring:
config:
activate:
on-profile: pro
server:
port: 81
---
#测试环境
spring:
config:
activate:
on-profile: test
server:
port: 82
上面的配置方式适用于yml和yaml文件, 那么properties文件如何配置呢
首先在application.properties设置启用的环境
# application.properties
# 设置启用的环境
spring.profiles.active=dev
在分别创建application.dev.properties、application.pro.properties、application.test.properties文件
# application.dev.properties
# 开发环境dev
server.port=80
# application.pro.properties
# 生产环境pro
server.port=81
# application.test.properties
# 测试环境test
server.port=82
多环境启动命令格式
我们可以将项目打成一个jar包, 并通过命令的方式切换并启动环境
在将项目打包成jar包之前, 我们先解决一些配置文件中乱码问题, 将配置文件的编码设置为UTF-8
为避免上一次影响我们这一次的测试, 建议双击clear
双击package进行打包
打包完成后, 我们通过命令行启动打包后的jar包
可以发现目前启动的是80端口, 说明使用的是我们配置的开发环境
切换环境并启动项目, 例如切换到test环境:
- 带参数启动SpringBoot:
java –jar 文件名称.jar –-spring.profiles.active=test
我们也可以传递参数, 临时修改端口:
java –jar 文件名称.jar –-server.port=99
多环境启动的兼容性
Maven中设置多环境, SpringBoot中也设置多环境, 我们应该让SpringBoot引用Maven中的属性, 让Maven起主导作用
在pom.xml文件中设置Maven多环境
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<profile.active>dev</profile.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>pro</id>
<properties>
<profile.active>pro</profile.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
</profiles>
SpringBoot中引用Maven属性
# 设置启用的环境
spring:
profiles:
active: ${profile.active}
---
# 开发环境
spring:
config:
activate:
on-profile: dev
server:
port: 80
---
# 生产环境
spring:
config:
activate:
on-profile: pro
server:
port: 81
---
#测试环境
spring:
config:
activate:
on-profile: test
server:
port: 82
pom.xml文件中安装插件解析resource文件中的内容(解析${}占位符)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<encoding>utf-8</encoding>
<useDefaultDelimiters>true</useDefaultDelimiters>
</configuration>
</plugin>
使用maven打包并命令行启动