spring boot 下多环境配置占位符无法使用

阅读更多

环境

  • spring boot
  • maven
  • 多环境配置占位符

之前做多环境配置的时候都是在 pom.xml 文件里写好标签,然后在 properties 使用${key}引用,打包之后就会自动替换掉。 
但是在使用 spring boot 后发现,居然替换不了。

解决方案

将 properties 里的 ${key} 替换成 @key@

问题原因

maven 继承了 spring-boot-starter-parent,并且 spring 的占位符也是 ${key}, 导致 mavenfilter 的占位符被 spring 的 maven pom 替换掉了,变成了 @key@,我们可以通过resource.delimiter来覆盖它。

 

现象:小于1.3.0版本如1.2.6的spring boot, 当指定profile进行参数打入的时候,发现没有问题,但是比如改用1.3.0,1.3.1及其以上版本的时候,发现参数打不进去,经过比对spring-boot-starter-parent的1.2系列与1.3系列的pom.xml,发现在1.3系列的pom中含有如下配置:


   1.6
   @ 
   UTF-8
   UTF-8
   ${java.version}
   ${java.version}

 


   org.apache.maven.plugins
   maven-resources-plugin
   2.6
   
      
         ${resource.delimiter}
      
      false
   

 

通过上面两个重点指出的地方,我们可以看到,我们在其他文件里取profile中的参数的时候,需要如下方式

[email protected]@

要想改为原来${}取值方式,实际上很简单,只需要将将上述配置中的useDefaultDelimiters设置为true

你可能感兴趣的:(spring,boot,占位符,配置替换)