Java, Spring лучшие практики для использования переменных в файлах свойств - PullRequest
1 голос
/ 30 сентября 2011

Я использую org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.Есть 3 файла свойств.Так что если свойства дублируются - последний выигрывает.

Первый файл содержит все свойства, другие заменяют некоторые свойства.Я использую, например, переменную, такую ​​как

log.dir=c:/log.

Таким образом, я могу заменить часть пути в свойствах, подобных

${log.dir}/app1.log

. В первом файле у меня есть 48 применений этой переменной.

Во втором файле у меня 25 замен для свойств из первого файла и 5 замен в третьем файле.

Проблема в том, что мне нужно переопределить эту переменную также во втором и третьем файле!

Я бы хотелиспользуйте то же имя

log.dir

Но если я определю его во втором или третьем файле - переопределение вернется к первому файлу - но мне нужно использовать для остальных 18 (48 -25 - 5 = 18) старых свойств,Каковы лучшие практики в подобных случаях?Благодарю.После некоторого анализа я хотел бы иметь переменную с одинаковым именем во всех файлах свойств, но значения не должны быть переопределены.Так для первого файла log.dir = c: \ log, для второго log.dir = d: \ log, для третьего log.dir = e: \ log.И при расчете путей для каждого файла используются собственные.Поэтому переопределенными должны быть только свойства, а не переменные.

1 Ответ

2 голосов
/ 01 октября 2011

Что (я думаю) вы хотели бы сделать, чтобы переменная log.dir изменила значение, когда конфигуратор перебирает файлы свойств и встречает ваши переопределенные определения.PropertyPlaceholderConfigurer не работает таким образом;для каждого встреченного ${placeholder} определения проверяется только переопределение выигрыша.Он разрешает заполнители с учетом контекста файла, в котором они определены.

Я вижу только одно возможное решение: используйте разные имена переменных в каждом файле.Написание собственного конфигуратора-заполнителя, вероятно, является очень плохим соотношением прироста к рабочей нагрузке.

...