Я работаю над проектом с несколькими отдельными модулями, каждый со своими собственными файлами свойств контекста приложения. Я хочу, чтобы иметь возможность загружать все эти свойства, чтобы они могли использоваться для разрешения места размещения к весне.Несколько файлов свойств в Spring 3.0
Предыдущие вопросы уже говорили об этом, и есть хороший блог here, который описывает, как использовать PropertyPlaceholderConfigurer в каждом контексте, заказать их по приоритету и установить ignoreUnresolveablePlaceholders истину так, чтобы эти файлы свойства могут включать перекрестные ссылки друг на друг, не разрушив вверх.
Однако это не решает мою проблему, так как я также хочу иметь возможность использовать свойства, которые загружаю для некоторого произвольного разрешения заполнителя (из некоторых файлов ямлов, которые я разбор). Для этого требуется использовать PropertyPlaceholderHelper, для чего объект Properties является аргументом.
Насколько я могу сказать, потенциальные решения:
1) Объединить все свойства файла в один свойств компонента. Затем это можно использовать для создания PropertyPlaceholderConfigurer (для внутреннего разрешения Placeholder) и используется с PropertyPlaceholderHelper (для моего собственного разрешения заполнителя)
2) Как-то настроить PropertyPlaceholderHelper для использования набора свойств и их иерархического расположения, проводимые PropertyPlaceholderConfigurers, если я пойду дальше и следую советам этого блога.
К сожалению, я не могу решить, как это сделать. Любая помощь будет принята с благодарностью!
PS Похоже, что весна 3.1 будет очень полезной здесь ... к сожалению, мы еще не готовы двигаться к ней, поэтому мне все еще нужно решение, чтобы переправить меня!
**** EDIT ****
Спасибо за ответы до сих пор. Это хорошие ответы, но, к сожалению, мне это не поможет, потому что (и извиняюсь, что не упоминал об этом ранее) мы в настоящее время находимся в процессе отделения основных модулей нашего проекта от неосновных модулей. Это означает, что основные модули и их контекст приложения не могут жестко закодировать имена файлов свойств. Разочаровывает, что сканирование классов Spring, похоже, нарушено, поэтому подстановочные знаки типа «classpath *: *. Properties» работают только при создании отдельных модулей, а не в проекте верхнего уровня (я считаю, что это известная проблема).
Вопрос заключается в том, как объединить файлы свойств, определенные в неосновных модулях, в существующие файлы свойств, определенные в основных модулях. На данный момент я собираюсь запустить BeanPostProcessor - мне просто интересно, есть ли более простой/более элегантный способ сделать это?
Благодаря
Я думаю, вам нужно предоставить хотя бы один постоянный сегмент dir, поэтому 'classpath *: *. Properties' не будет работать, но' classpath *: config/*. Properties' будет. – mrembisz