一、前言
日常开发中至少有三个环境,分别是开发环境(dev
),测试环境(test
),生产环境(prod
)。
不同的环境的各种配置都不相同,比如数据库,端口,IP
地址等信息.
手动改配置麻烦且容易出错,如何管理不同环境的配置参数呢?
本篇文章就来介绍一下Spring Boot
中多环境如何配置,如何打包
二、配置多环境
1. 创建不同环境的配置文件
application-dev.properties、application-test.properties、application-prod.properties
2. 在启动类添加下面代码
String activeProfile = SpringUtil.getActiveProfile();
Environment environment = SpringUtil.getBean(Environment.class);
System.out.println("当前环境:" + activeProfile + ", message:" + environment.getProperty("message"));
SpringUtil来自hutool包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.1</version>
</dependency>
3. 指定运行的环境
3.1 配置文件中指定(方式一)
在application.properties
或者application.yml
文件中指定,内容如下:
server.port=8765
# 指定运行环境为测试环境
spring.profiles.active=test
3.3 启动配置的方式指定(方式二)
--spring.profiles.active=prod
3.3 运行 jar 的时候指定(方式三)
Spring Boot
内置的环境切换能够在运行Jar
包的时候指定环境,命令如下:
java -jar xxx.jar --spring.profiles.active=test
3.4 Maven 的多环境配置(方式四)
在maven
的pom.xml
文件中定义不同环境的profile
<dependencies>
....
</dependencies>
<!--定义三种开发环境-->
<profiles>
<profile>
<!--不同环境的唯一id-->
<id>dev</id>
<activation>
<!--默认激活开发环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--activeProfile对应application.properties中的@activeProfile@-->
<activeProfile>dev</activeProfile>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<activeProfile>test</activeProfile>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<activeProfile>prod</activeProfile>
</properties>
</profile>
</profiles>
标签<activeProfile>
正是对应着配置文件中的@activeProfile@
。
<activeByDefault>
标签指定了默认激活的环境,则是打包的时候不指定-P
选项默认选择的环境。
以上配置完成后,将会在IDEA的右侧Maven
选项卡中出现以下内容:
3.5 Maven打包的时候指定(方式五)
可以选择打包的环境,然后点击package
即可。
或者在项目的根目录下用命令打包,不过需要使用-P
指定环境,如下:
mvn clean package package -P test
如果觉得太麻烦,可以提前定义好maven命令