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