日常开发中一般都会有三个不同的环境,分别是开发环境(dev),测试环境(test)和生产环境(prod),不同的环境各种配置都不相同,比如数据库配置,服务器端口等等。
Spring Boot 多环境配置
Spring Boot 自己本身带的有多环境配置,对多环境整合已经有了很好的支持,能够在打包,运行期间自由切换环境。
创建不同环境的配置文件
不同环境的配置文件需要进行分开,按照项目运行环境启用加载。新建 application-dev.yml, application-test.yml, application-prod.yml。加上 application.yml 一共有四个配置文件。注意:配置文件名称一定要是 application-name.yml 格式,name可以自定义。
指定不同环境的配置文件
在各个环境的配置文件都建立好之后,需要在 application.yml 文件中指定启用哪个环境的配置文件:
# 指定启用环境为 开发环境 dev
spring:
profiles:
active: dev
如果没有指定运行的环境,Spring Boot 会默认加载 application.yml 配置文件。
运行 jar 包的时候指定配置文件
Spring Boot 内置的环境切换能够在运行 Jar 包的时候指定环境,命令如下:
java -jar xxx.jar --spring.profiles.active=dev
以上命令指定了运行启用的环境为 开发环境 dev。
Maven 多环境配置
Maven 也提供了对多环境的支持,不仅仅支持 Spring Boot 项目,只要是基于 Maven 的项目都可以配置。Maven 对于多环境的支持在功能方面更加强大,支持 JDK 版本、资源文件、操作系统等等。
创建不同环境的配置文件
新建 application-dev.yml, application-test.yml, application-prod.yml。加上 application.yml 一共四个配置文件。
定义激活的变量
需要将 Maven 激活的环境作用于 Spring Boot,实际还是利用了 spring.profiles.active 这个属性,只是现在这个属性的取值将是取值于 Maven,配置如下:
spring.profiles.active=@profile.active@
profile.active 实际上就是一个变量,在 maven 打包的时候指定的 -P dev 传入的就是值。
pom 文件中定义 profiles
<!--定义三种开发环境-->
<profiles>
<profile>
<!--不同环境的唯一id-->
<id>dev</id>
<activation>
<!--默认激活开发环境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--profile.active对应application.yml中的@profile.active@-->
<profile.active>dev</profile.active>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>test</id>
<properties>
<profile.active>test</profile.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<profile.active>prod</profile.active>
</properties>
</profile>
</profiles>
标签 <profile.active> 正是对应着配置文件 application.yml 中的 @profile.active@ 变量。
activeByDefault 标签指定了默认激活的环境,即是打包时不指定 -P 选项默认的选择环境。
Maven 中的激活条件还可以根据 JDK、操作系统、文件存在或者缺失来激活,这些内容都在 activation 中进行配置:
<!--activation用来指定激活方式,可以根据jdk环境,环境变量,文件的存在或缺失-->
<activation>
<!--配置默认激活-->
<activeByDefault>true</activeByDefault>
<!--通过jdk版本-->
<!--当jdk环境版本为1.8时,此profile被激活-->
<jdk>1.8</jdk>
<!--当jdk环境版本1.8或以上时,此profile被激活-->
<jdk>[1.8,)</jdk>
<!--根据当前操作系统-->
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
资源过滤
项目默认运行时会将所有的配置文件都带上,但是可以通过配置来只保留对应环境下的配置文件,增加项目的安全性。
<build>
<resources>
<!--排除配置文件-->
<resource>
<directory>src/main/resources</directory>
<!--先排除所有的配置文件-->
<excludes>
<!--使用通配符,当然可以定义多个exclude标签进行排除-->
<exclude>application*.properties</exclude>
</excludes>
</resource>
<!--根据激活条件引入打包所需的配置和文件-->
<resource>
<directory>src/main/resources</directory>
<!--引入所需环境的配置文件-->
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<!--根据maven选择环境导入配置文件-->
<include>application-${profile.active}.yml</include>
</includes>
</resource>
</resources>
</build>
标签:SpringBoot,配置文件,环境,dev,application,切换,active,yml
From: https://www.cnblogs.com/wangms821/p/17131516.html