Несколько файлов свойств в Spring 3.0

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

В предыдущих вопросах это упоминалось, и есть хорошая запись в блоге здесь , в которой описывается, как использовать PropertyPlaceholderConfigurer в каждом контексте, упорядочивать их по приоритету и устанавливать для ignoreUnresolveablePlaceholder значение true, чтобы эти файлы свойств могли пересекаться. ссылаться друг на друга, не взрываясь.

Однако это не решает мою проблему, так как я также хочу иметь возможность использовать свойства, которые я загружаю, для некоторого настраиваемого разрешения заполнителей (из некоторых файлов yaml, которые я анализирую). Для этого необходимо использовать PropertyPlaceholderHelper, которому в качестве аргумента требуется объект Properties.

Насколько я могу судить, возможные решения следующие:

1) Объединить все файлы свойств в один компонент свойств. Затем это можно использовать для создания PropertyPlaceholderConfigurer (для разрешения внутреннего заполнителя Spring) и использовать с PropertyPlaceholderHelper (для моего собственного разрешения заполнителя)

2) Каким-то образом настроить PropertyPlaceholderHelper для использования набора свойств и их иерархического расположения, удерживаемого от PropertyPlaceholderConfigurers, если я продолжу и последую советам из этого сообщения в блоге.

К сожалению, я не могу понять, как это сделать. Любая помощь будет принята с благодарностью!

PS Похоже, Spring 3.1 здесь очень поможет ... к сожалению, мы еще не готовы к нему переходить, так что мне все еще нужно решение, которое меня спасет!

**** EDIT ****

Спасибо за ответы. Это хорошие ответы, но, к сожалению, они мне не помогут, потому что (и извиняюсь за то, что не упомянули об этом ранее) мы в настоящее время находимся в процессе отделения основных модулей нашего проекта от дополнительных. Это означает, что основные модули и их контекст приложения не могут жестко запрограммировать имена файлов свойств. К сожалению, сканирование пути к классам в Spring, похоже, не работает, поэтому подстановочные знаки типа «classpath *: *. Properties» работают только при создании отдельных модулей, а не проекта верхнего уровня (я считаю, что это известная проблема).

Тогда возникает вопрос, как объединить файлы свойств, определенные в дополнительных модулях, с существующими файлами свойств, определенными в основных модулях. В настоящий момент я использую BeanPostProcessor - мне просто интересно, есть ли более простой / элегантный способ сделать это?

Спасибо

19
задан Tom McIntyre 19 January 2012 в 11:52
поделиться