2013-04-09 2 views
0

Я хотел бы разрешить моему приложению Spring 3.1.2 загружать свойства конфигурации из файла свойств по умолчанию, встроенного в мою банку, и дополнительно разрешать пользователю указывать путь к переопределению файл свойств в качестве параметра командной строки.Файлы свойств по умолчанию и пользовательские свойства w/Spring

Я понимаю, что могу использовать <context:property-placeholder> для простого сценария загрузки свойств из моего пути к классам, но как я могу обработать описанный выше сценарий со свойствами из потенциально двух объединенных файлов свойств?

Сценарий, который я пытаюсь дублировать, в основном адресован CompositeConfiguration конфигурации Apache Commons.

ответ

3

Вы можете добавить свойства имя файла с помощью системных свойств

Проверить это

how to read System environment variable in Spring applicationContext

http://www.summa-tech.com/blog/2009/04/20/6-tips-for-managing-property-files-with-spring/

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html#expressions-beandef-xml-based

http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html

UPD

1. Первый путь заключается объявить PSPC, как

 <context:property-placeholder 
     location="classpath:app.properties, classpath:user.properties" 
     ignore-resource-not-found="true" /> 

Затем вы включаете ваше app.properties Into банки.

Пользователь включает (или не) папку, содержащую user.properties в путь к классам.

user.properties имеет приоритет над app.properties.

2. Если вам нужно пользователю указать точный файл

<context:property-placeholder 
    location="classpath:app.properties, file:${userPropsPath}" 
    ignore-resource-not-found="true" /> 

Пользователь добавляет -DuserPropsPath="<full path here>"


Оба случая работают и протестированные с пружиной-3.1.1.

+0

Благодарим за ответ, но отсутствует один важный элемент - как два файла свойств (один из которых является аргументом для приложения, другой со значениями по умолчанию в ресурсе) объединяются или рассматриваются как составные? Сценарий, который я пытаюсь дублировать, в основном касается адреса конфигурации CompositeConfiguration для Apache Commons. – HolySamosa

+0

Ответ обновлен. – Vitaly

+0

Было ли это полезно, пожалуйста? – Vitaly