В настоящее время мы пишем приложение, которое разбито на несколько проектов / модулей. Например, возьмем следующие модули:
- myApp-DAO
- myApp-jabber
Каждый модуль имеет свой собственный XML-файл контекста Spring. Для модуля DAO у меня есть PropertyPlaceholderConfigurer, который считывает файл свойств с необходимыми параметрами подключения к базе данных. В модуле jabber у меня также есть PropertyPlaceHolderConfigurer для свойств соединения jabber.
Теперь идет основное приложение, которое включает myApp-DAO и myApp-jabber. Он читает все файлы контекста и запускает один большой контекст Spring. К сожалению, кажется, что может быть только один PropertyPlaceholderConfigurer для каждого контекста, поэтому какой бы модуль ни загружался первым, может прочитать его параметры соединения. Другой вызывает исключение с ошибкой типа «Не удалось разрешить заполнитель 'jabber.host'»
Я как бы понимаю, в чем проблема, но на самом деле я не знаю решения - или лучшей практики для моего варианта использования.
Как мне настроить каждый модуль так, чтобы каждый мог загружать свой собственный файл свойств? Прямо сейчас я переместил PropertyPlaceHolderConfigurer из отдельных файлов контекста и объединил их в контекст основного приложения (загрузив все файлы свойств с помощью одного PropertyPlaceHolderConfigurer). Это отстой, потому что теперь каждый, кто использует модуль dao, должен знать, что им нужен PropertyPlaceHolderConfigurer в их контексте ... также завершаются сбои интеграционные тесты в модуле dao и т. Д.
Мне любопытно услышать о решениях / идеях от сообщества stackoverflow ..