Несколько файлов .properties в проекте Java - PullRequest
0 голосов
/ 01 февраля 2011

Я хотел бы найти удобный способ переключения между несколькими .properties файлами для разных конфигураций развертывания.

Моя первоначальная склонность - создать отдельный файл selector.properties, единственное свойство которого используется для определения правильного файла:

properties.file=deploymentConfiguration1.properties

... за одно развертывание или:

properties.file=deploymentConfiguration2.properties

... для следующего развертывания.

У другого разработчика в моей команде есть класс ApplicationProperties, в котором:

private static final String PROP_FILE="someFileName.properties";

... это средство для этого. Однако я хочу переключить файлы свойств без перестройки ! Заранее спасибо за ваш вклад.

РЕДАКТИРОВАТЬ: Может быть, я должен был быть более ясным изначально, но это для набора веб-сервисов, упакованных как AAR. Я просто перенесу его на веб-сервер и позволю Tomcat и Axis2 сделать свое дело.

Итак, я не думаю, что некоторые ответы с параметрами командной строки будут работать в этом контексте.

Ответы [ 3 ]

6 голосов
/ 01 февраля 2011

Наличие нескольких файлов свойств, по одному на env, например:

application-dev.properties
application-test.properties
application-prod.properties

Запустите ваше приложение с env в качестве системного свойства;

java -Denv=test

Загрузите ваши свойства из соответствующего файла;

String props = "application-" + System.getProperty("env") + ".properties";

Обратите внимание, что я бы вообще не одобрял это в пользу файла свойств с фиксированным именем, в котором файл создается в build time.

Редактировать:
Если это веб-приложение, вы можете установить значение env в дескрипторе развертывания (web.xml)

<env-entry>
  <env-entry-name>myEnv</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>test</env-entry-value>
</env-entry>

, тогда вы можете получить значение в вашем вебприложение, как это;

Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
String env = (String)envCtx.lookup("myEnv");
String props = "application-" + env + ".properties";
2 голосов
/ 01 февраля 2011

Добавьте аргумент, указывающий на файл конфигурации!

java Program -config deploymentConfiguration2.properties
0 голосов
/ 01 февраля 2011

Подход с использованием файла свойств "менеджера свойств" звучит хорошо. Главный файл свойств может быть передан в качестве параметра в vm через аргумент jvm Но одним из недостатков этого процесса является то, что главный файл свойств становится неуправляемым в течение определенного периода времени. Например, вы можете сохранить некоторые старые ссылки на файлы свойств, которые больше не имеют смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...