服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - SpringBoot 如何根据不同profile选择不同配置

SpringBoot 如何根据不同profile选择不同配置

2021-11-03 12:09石臻臻的杂货铺 Java教程

这篇文章主要介绍了SpringBoot 如何根据不同profile选择不同配置的操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot 根据不同profile选择不同配置

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.开发状态下切换不同环境

SpringBoot 如何根据不同profile选择不同配置

  • 1.IDEA侧边栏Maven->Profiles勾选需要的环境
  • 2.项目目录下,终端中执行命令mvn -DskipTests=true clean install
  • 3.首次切换需要进行如下操作,后续调试运行无需更改

PS

如上配置后,直接更改spring.profiles.active无效,且项目运行会报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://shirenchuang.blog.csdn.net/article/details/84242333

延伸 · 阅读

精彩推荐
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    这篇文章主要介绍了Java使用SAX解析xml的示例,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml与Java对象的转换详解

    xml与Java对象的转换详解

    这篇文章主要介绍了xml与Java对象的转换详解的相关资料,需要的朋友可以参考下...

    Java教程网2942020-09-17
  • Java教程20个非常实用的Java程序代码片段

    20个非常实用的Java程序代码片段

    这篇文章主要为大家分享了20个非常实用的Java程序片段,对java开发项目有所帮助,感兴趣的小伙伴们可以参考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代码

    小米推送Java代码

    今天小编就为大家分享一篇关于小米推送Java代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    富贵稳中求8032021-07-12
  • Java教程Java BufferWriter写文件写不进去或缺失数据的解决

    Java BufferWriter写文件写不进去或缺失数据的解决

    这篇文章主要介绍了Java BufferWriter写文件写不进去或缺失数据的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望...

    spcoder14552021-10-18
  • Java教程升级IDEA后Lombok不能使用的解决方法

    升级IDEA后Lombok不能使用的解决方法

    最近看到提示IDEA提示升级,寻思已经有好久没有升过级了。升级完毕重启之后,突然发现好多错误,本文就来介绍一下如何解决,感兴趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java实现抢红包功能

    Java实现抢红包功能

    这篇文章主要为大家详细介绍了Java实现抢红包功能,采用多线程模拟多人同时抢红包,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java8中Stream使用的一个注意事项

    Java8中Stream使用的一个注意事项

    最近在工作中发现了对于集合操作转换的神器,java8新特性 stream,但在使用中遇到了一个非常重要的注意点,所以这篇文章主要给大家介绍了关于Java8中S...

    阿杜7482021-02-04