SpringBoot 如何根据不同profile选择不同配置
作者:石臻臻的杂货铺
这篇文章主要介绍了SpringBoot 如何根据不同profile选择不同配置的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
SpringBoot 根据不同profile选择不同配置
附上pom的 profiles配置
<build> <finalName>${project.artifactId}</finalName> <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>utf-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profilesActive>dev</profilesActive> </properties> </profile> <profile> <id>test</id> <properties> <profilesActive>test</profilesActive> </properties> </profile> <profile> <id>prod</id> <properties> <profilesActive>prod</profilesActive> </properties> <build> <filters> <filter>/Users/xxx/Desktop/prod.properties</filter> </filters> </build> </profile> </profiles>
如果使用的是 application-prod.yml 文件
里面的占位符会被prod.properties替换掉
占位符用 两个@@ 例如:@jdbc.name@
SpringBoot不同profile过滤配置文件
项目多数情况下,需要部署到不同环境中.使用maven打包,不做其它配置时,默认输出的jar包中,包含所有的配置文件,这样显然不太合理,当不同的生产环境中,不希望存在其它的生产环境的配置文件,可采用如下配置
1.pom文件中追加profile配置
<!--不同开发环境配置--> <profiles> <profile> <id>dev</id> <properties> <!--pa为自定义的属性,可在application.yml文件中引用--> <pa>dev</pa> </properties> <activation> <!--不加参数默认的profile--> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>test</id> <properties> <pa>test</pa> </properties> </profile> <profiles> <!--节点层级为project>profiles-->
2.pom文件中build节点下追加资源过滤选项
<resources> <!--先忽略所有配置文件,后进行需要的配置文件的追加--> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/application-*.yml</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <includes> <!--此处的pa代表的是profile中自定义的属性--> <include>**/application-${pa}.yml</include> </includes> </resource> </resources>
3.application.yml文件中引用profile中定义参数
spring: profiles: # profile中定义的pa属性 active: @pa@
4.手动打包指定环境
mvn clean package -Dmaven.test.skip=true -Pdev
- -Dmaven.test.skip=true 表示跳过测试,可提高打包速度
- -P后面的参数为profile的名称
5.开发状态下切换不同环境
- 1.IDEA侧边栏Maven->Profiles勾选需要的环境
- 2.项目目录下,终端中执行命令mvn -DskipTests=true clean install
- 3.首次切换需要进行如下操作,后续调试运行无需更改
PS
如上配置后,直接更改spring.profiles.active无效,且项目运行会报错
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。