Это кажется довольно распространенной проблемой, но я не нашел никакого мнения о наилучшем методе, поэтому я задаю этот вопрос здесь.
Я работаю над Java-приложением командной строки, используя Spring Batch и Spring. Я использую файл свойств вместе с PropertyPlaceholderConfigurer, но я немного уверен, что лучше всего обрабатывать файлы свойств для нескольких сред (dev, test и т.д.). Мой Googling запускает только программные способы загрузки свойств (то есть в самом Java-коде), который не работает для того, что я делаю.
Один из подходов, который я рассмотрел, - это просто размещение каждого файла свойств среды на сервере и добавление каталога файлов в путь к классам с помощью аргумента командной строки, но у меня возникли проблемы с загрузкой файла с помощью этого метода.
Другим методом, который я рассматриваю, является просто включение всех файлов свойств в банке и использование системного свойства или аргумента командной строки для заполнения имени файла свойств во время выполнения, например:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:job.properties.${env}</value>
</list>
</property>
</bean>
Я наклоняюсь к последнему решению, но я также смотрю, есть ли лучший метод, который я пропускаю.
Я должен также упомянуть, что мне нужно сделать замену во время выполнения, а не в сборке. Для процесса, который мне требуется использовать, требуется отдельная сборка, которая будет продвигаться через среду для производства, поэтому я не могу использовать замену ala Maven или Ant.