Я пытаюсь найти лучший способ передать сложные конфигурации в Spring webapp, запущенном в Tomcat. В настоящее время я использую JNDI для передачи источников данных и строк из контекста Tomcat в webapp, и это хорошо работает.
Но, скажем, мне нужно выбрать реализацию службы уведомлений. Нет никакого способа, чтобы Spring мог условно выбрать, какой bean для создания экземпляра (хотя в прошлом я использовал строку JNDI для импорта предопределенной конфигурации beans путем установки contextConfigLocation).
Я также видел много webapps, которые поставляют инструмент настройки, который создаст пользовательский WAR файл. По-моему, это плохая форма, если только по той причине, что она предотвращает перераспределение WARs вверх по течению без многих проверок, чтобы гарантировать, что вся конфигурация была повторно применена.
В идеале я мог бы предоставить XML файл Spring, который существовал в файловой системе, за пределами webapp. Но директива import Spring, похоже, не разрешает переменные ${}, что делает невозможным предоставление настроек.
Существуют ли какие-либо методы, которые я могу использовать здесь, чтобы правильно отделить сложную конфигурацию от webapp?