Springboot多环境配置

2020-08-24 18:26:38 830

前言

在开发过程中,正常都会有不同的环境,如开发环境、测试环境、生产环境,对于不同环境的配置也会有所差别,比如数据源配置、日志配置。如果在部署的时候再去根据不同环境调整对应的参数的话,太麻烦了,而且也容易出错。

而SpringBoot对这一个问题也有对应的解决方案。

解析

1、定义profiles

<profiles>
   <profile>
      <!--不同环境Profile的唯一id-->
      <id>dev</id>
      <properties>
         <!--profiles.active是自定义的字段(名字随便起),自定义字段可以有多个-->
         <profiles.active>dev</profiles.active>
      </properties>
   </profile>
   <profile>
      <id>test</id>
      <properties>
         <profiles.active>test</profiles.active>
      </properties>
   </profile>
   <profile>
      <id>prod</id>
      <properties>
         <profiles.active>prod</profiles.active>
      </properties>
      <activation>
         <activeByDefault>true</activeByDefault>
      </activation>
   </profile>
</profiles>

可以看到定义了多个profile,每个profile都有唯一的id,也包含properties属性。这里为每个profile都定义一个名为profiles.active的properties,每个环境的值不同。当我们打包项目时,激活不同的环境,profiles.active字段就会被赋予不同的值。activeByDefault是用于设置默认激活的环境,即默认生产环境。


2、定义不同环境的配置

I_G7VZC1P5U`A5VR7}Y8YLI.png

2E`7$T~A$O9`TZNR4NNA~]3.png


3、在配置中引用变量值

XNMNINW$R3R]AL$6R)[IUOK.png


4、设置配置文件中需要激活的环境变量值

   spring.profiles.active=xxx,此处直接引用激活的

     @1$EDHR2BGPFD127V5N9(KH.png

 

5、结合resources,定义编译打包文件

~`18MQLH8VIL$$0V3JYYDQN.png

这样打包完,资源文件就会排除掉非激活的环境配置文件。

3Q1RJ}Q)DJ4EUF(UENKS(1C.png


至此项目多环境的配置就完成了。

如果使用的开发工具是idea的话,定义完profiles后,在maven窗口中就会出现定义的环境,名称即为profile的id

image.png


注意:

在第4步中,设置激活的profile(spring.profiles.active=@profiles.active@)使用的是@,而不是${}。有兴趣的可以见:spring boot通过maven filter替换properties属性为啥失败

对maven POM文件的其他配置感兴趣的可见:Maven使用说明

关于对资源文件编译时,就解析替换环境变量的值,相关配置见:maven resource filter 说明和配置方法

相关文章

分类

{{name}}

标签

{{name}}

相关文章

广告区域
没有相关数据