背景:
在实际开发中,会面临不同环境对应不同的变量,比如开发、测试、联调、预发布、生产等各种环境对应的数据库是不一样的,如果靠手动更改,效率就会非常低下,也不利于自动化运维的实现,本文就来介绍一下SpringBoot多环境的配置。
本文仅配置运行时的不同端口为例
配置步骤:
第一步、确定有多少环境(笔者根据实际情况,提供了5种)
| 环境名称 | 环境变量 |
| 开发环境 | dev |
| 测试环境 | sit |
| 联调环境 | uat |
| 预发布环境 | pre |
| 生产环境 | prd |
第二步、配置多个application.properties文件对应不同的环境,(需要保留application.properties,可配置公共参数)如下图所示:
以application-dev.properties文件为例,内容如下图所示:
其余配置内容依次为:sit配置端口为8091、uat配置端口为8092、pre配置端口为8093、prd配置端口为8094
第三步、修改pom文件增加多环境的配置,具体配置可参考
<project...>
......
......
......
<build>
......
......
......
<resources>
<resource><!-- 扫描替换 -->
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
<!-- 打包的时候最少包含一个文件application.properties -->
<includes>
<include>application.properties</include>
<include>application-${multi.env}.properties</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/src/main/resources/</directory>
<!-- 打包的时候不打包application*.properties这种文件 -->
<excludes>
<exclude>application*.properties</exclude>
</excludes>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties><!-- multi.env 为自定义变量 -->
<multi.env>dev</multi.env>
</properties>
</profile>
<profile>
<id>sit</id>
<properties>
<multi.env>sit</multi.env>
</properties>
</profile>
<profile>
<id>uat</id>
<properties>
<multi.env>uat</multi.env>
</properties>
</profile>
<profile>
<id>pre</id>
<properties>
<multi.env>pre</multi.env>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<multi.env>prd</multi.env>
</properties>
</profile>
</profiles>
</project>
第四步、在application.properties文件中引用多环境变量multi.env,如图所示:
至此,配置已经完成。
校验结果:
编写一个Controller类并读取环境变量,代码如下:
@RestController
class IndexController {
@Value("${spring.profiles.active}")
private String env;
@GetMapping(value = "/index")
public String index() {
return "Server is running,you can access normally.Current env is:" + env + ".";
}
}
运行,我们可以通过idea工具直接选择环境运行,(其中development为系统默认变量,可忽略)如图所示:

运行结果

我们选择的是sit对应的测试环境,校验结果:端口正确、变量引用正确。选择不同的环境对应的端口和环境变量都会依次对应。
感谢您的阅读,有疑问可留言

1万+

被折叠的 条评论
为什么被折叠?



