Я работаю над проектом с несколькими отдельными модулями, каждый со своими собственными файлами свойств контекста приложения. Я хочу, чтобы иметь возможность загружать все эти свойства, чтобы они могли использоваться для разрешения места размещения с помощью Spring.
Предыдущие вопросы упомянули об этом, и есть хорошее сообщение в блоге здесь, в котором описывается, как использовать PropertyPlaceholderConfigurer в каждом контексте, заказывать их по приоритету и установите ignoreUnresolveablePlaceholders в true, чтобы эти файлы свойств могли перекрестно ссылаться друг на друга, не взорвав.
Однако это не решает мою проблему, так как я также хочу иметь возможность использовать свойства, которые я загружаю для некоторого произвольного разрешения заполнителя (из некоторых файлов ямлов, которые я разбор). Для этого требуется использовать PropertyPlaceholderHelper, для чего объект Properties является аргументом.
Насколько я могу судить, потенциальные решения:
1) Слейте весь файл свойств в один из свойств bean. Затем это можно использовать для создания PropertyPlaceholderConfigurer (для Spring внутреннего разрешения заполнителя) и используется с PropertyPlaceholderHelper (для моего собственного разрешения заполнителя)
2) Каким-то образом настройте PropertyPlaceholderHelper для использования набора свойств и их иерархического расположения, проводимого PropertyPlaceholderConfigurers, если я пойду дальше и следую советам этого сообщения в блоге.
К сожалению, я не могу понять, как это сделать. Любая помощь будет принята с благодарностью!
PS Похоже, что Spring 3.1 будет большой помощью здесь... к сожалению, мы еще не готовы двигаться к нему, поэтому мне все еще нужно решение, чтобы переправить меня!
**** ИЗМЕНИТЬ ****
Спасибо за ответы до сих пор. Это хорошие ответы, но, к сожалению, мне это не поможет, потому что (и извиняюсь, что не упоминал об этом ранее) мы в настоящее время находимся в процессе ветки основных модулей нашего проекта от неосновных модулей. Это означает, что основные модули и их контекст приложения не могут жестко закодировать имена файлов свойств. Разочарование, сканирование классов Spring, по-видимому, нарушено, поэтому подстановочные знаки типа "classpath *: *. Properties" работают только при создании отдельных модулей, а не в проекте верхнего уровня (я считаю, что это известная проблема).
Вопрос заключается в том, как объединить файлы свойств, определенные в неосновных модулях, в существующие файлы свойств, определенные в основных модулях. В настоящий момент я продвигаюсь с помощью BeanPostProcessor - мне просто интересно, есть ли более простой/более элегантный способ сделать это?
Спасибо