正文之前
今天给一个新项目做多环境配置分离,其实就是线上环境和测试环境走不同的配置,本来是一个常规操作,但是偏偏遇到了难以理解的问题。不过,正好有时间可以解决问题,索性拿出两个小时把多环境配置的事情研究透。
正文
这个多环境配置是个常规问题,一般的实现方式是:
配置多个application.properties文件,通过使用mvn的打包参数来动态指定要使用的application配置文件,但是呢,mvn的打包参数有两种传递方式:
- 通过mvn的-P参数来指定环境信息,它可以动态激活pom文件中的<profiles>结点下对应的环境结点
- 通过mvn的-D参数来指定环境信息,这种方式的优势在于不需要配置<profiles>结点,简单粗暴的指定环境信息(这种方式不常见,我也是用这种方式碰到的问题)
其实这两种方式差别仅在于mvn的打包参数传递方式上,第一种方式是大家常用的,为了便于理解,我把这两种方式放到一起来说一下。
首先,按照springboot的规定,创建application.properties和多个application-xxx.properties配置文件(参考1)
然后application.properties里增加配置项