聊聊基本
古代程序员在调试springboot的时候,只有application.properties 或者 application.yml可以放配置,并且配置文件中分别放几段配置,大致是:本地开发一套,测试环境一套,预发…线上…,这很不方便,需要随着环境变更不断增删配置。
所以,随着技术更新迭代,现在已经可以通过spring.profile.active=param,通过指定param来匹配application-%param%.properties,比如:你在application.properties里面设置了spring.profile.active=dev,同时你就可以添加一个application-dev.properties配置文件,springboot项目就会在读取application.properties的同时,发现了你指定另一个要读取的配置,所以springboot不厌其烦的将另一个配置也读了。
所以对于不同的环境,你只需要添加 application-dev.properties、application-pro.properties、application-test.properties…然后在application.properties中设置spring.profile.active=dev 或spring.profile.active=pro 或 spring.profile.active=test… 就可以了。
后来大家突然发觉,这样其实仍然有些不安全因素存在,所以用上了配置中心,还是上面的配置方式,但是配置内容却不放在配置文件里面了,换成了用于与配置中心确认身份从而交换数据的一些内容,如下图所示
问题
接着上面的说,今天我在公司看到了一个war包部署的项目,并且配置文件长这样
看到这,我并没有大受震撼,只觉得无语,再看他的内容
众所周知,即便是再简化这个配置,他也要指定到底要读取哪一套配置才可以,可是他并没有application.properties文件,我们要怎么启动呢?
解决
正如我所说的,不论怎样,这个东西都得有!所以你既然打包的时候不指定,那就一定是启动的时候指定,毕竟这个配置文件就是用来在启动的时候加载配置内容的。
所以我在我的windows环境下进行了如下操作:
1、因为项目是war,所以一定是外部tomcat启动了,所以我找到了我落满尘埃的tomcat的文件夹,在它的bin目录里含泪创建一个名为setenv.bat的文件
2、然后索性向刚创建的文件中添加: set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=dev"
3、最后无奈保存文件启动项目,事实证明…我成功了
4、防患于未然,这个是linux下的配置方式,tomcat的bin目录下创建名为setenv.sh的文件并添加内容:JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"
感言
看文章的人真帅