我们开发当中一般会有多种运行环境,在各种运行环境中配置文件多少有些不同。我们可以利用spring.profiles.active来实现动态加载配置文件。

实现很简单,以springboot+ maven项目为例,走起:

一、创建配置文件

配置文件结构:这里建三个配置文件,application.yml作为主配置文件配置所有共同的配置;-dev和-local分别配置两种环境下的不同配置内容,如数据库地址等。

 application.yml中添加spring.profiles.active配置来动态加载活跃的配置文件:

spring:
  profiles:
    active: "@spring.active@"

@spring.active@有些情况下不需要加双引号,但是如果抱以下错误就可以通过加双引号来解决。

错误信息:

found character ‘@’ that cannot start any token. (Do not use @ for indentation)
....

二、pom文件添加profiles配置

<profiles>
	<profile>
		<id>local</id>
		<properties>
			<spring.active>local</spring.active>
		</properties>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
	<profile>
		<id>dev</id>
		<properties>
			<spring.active>dev</spring.active>
		</properties>
	</profile>
</profiles>

以上配置声明有两种配置文件、分别为dev和local。且默认使用local(通过<activeByDefault>true</activeByDefault>设置的)。

这样配置好的项目在maven中就多了一个配置项:

 

local有灰色对勾√,说明默认使用local。

三、具体应用

1、使用mvn命令打包项目打包时。

  •        mvn clean package 清理并打包命令,默认是使用local配置文件。
  •        mvn clean package -P dev 清理并指定配置文件打包命令,使用dev配置文件。

2、手动打包,通过勾选profiles选项切换配置文件

      maven profiles中勾选dev,然后打包,则使用dev配置文件。

 

 

3、本地启动springboot时,以idea为例。

  • 如步骤2中勾选所需激活的配置文件后,启动application中的main方法则对应加载勾选中的配置文件。
  • 还可以在idea中配置指定加载配置文件,指定后勾选功能失效。方法如下:

 

使用很简单。相信也还有更多的花样可以玩。暂且这些。

 

四、测试类中对profile的配置

测试类上加入以下配置即可制定配置文件,替换dev即可

@ActiveProfiles("dev")

 

 

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐