#java #spring #file #ant #properties
#java #spring #файл #ant #свойства
Вопрос:
Я использую org.springframework.beans.factory.config.PropertyPlaceholderConfigurer . Существует 3 файла свойств. Итак, если свойства дублируются — last выигрывает.
Первый файл содержит все свойства, другие заменяют некоторые свойства. Я использую, например, переменную, например
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. Я даже не уверен, что вы сказали. В любом случае, вы можете захотеть изучить возможность написания настраиваемого конфигуратора заполнителей, хотя это звучит так, как будто вы злоупотребляете этой идеей.
Ответ №1:
Что (я думаю) вы хотели бы сделать, так это заставить log.dir
переменную изменять значение по мере того, как конфигуратор просматривает файлы свойств и сталкивается с вашими переопределяющими определениями.
Проблема в том, PropertyPlaceholderConfigurer
что это не работает таким образом; для каждого встречающегося ${placeholder}
определения он проверяет только выигрышное переопределение. Он разрешает заполнители с учетом контекста файла, в котором они определены.
Я вижу только одно возможное решение: использовать разные имена переменных в каждом файле. Написание собственного конфигуратора-заполнителя, вероятно, очень низкое соотношение прибыли и рабочей нагрузки.