这似乎是一个非常普遍的问题,但我没有找到任何关于最佳方法的共识,所以我在这里提出问题.
我正在使用Spring Batch和Spring开发一个命令行Java应用程序.我正在使用属性文件和PropertyPlaceholderConfigurer,但我不太确定处理多个环境(dev,test等)的属性文件的最佳方法.我的谷歌搜索只是编写加载属性的程序化方式(即,在Java代码本身),这对我正在做的事情不起作用.
我考虑过的一种方法是简单地将每个环境的属性文件放在服务器上,并通过命令行参数将文件的目录添加到类路径中,但是我一直在使用该方法加载文件时遇到问题.
我正在考虑的另一种方法是在jar中包含所有属性文件,并使用系统属性或命令行参数在运行时填写属性文件的名称,如下所示:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:job.properties.${env}</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
我倾向于后一种解决方案,但我也想看看是否有一种更好的方法,我忽略了.
我还要提一下,我必须在运行时而不是在构建中进行替换.我被限制使用的过程需要一个单独的构建,这个构建将通过环境升级到生产,所以我无法使用替换ala Maven或Ant.