То, что я хотел бы достичь, это возможность «динамически» (то есть на основе свойства, определенного в файле конфигурации) включить/отключить импорт дочернего контекста Spring XML.Как добиться условного импорта ресурсов в контексте Spring XML?
Я представляю себе что-то вроде:
<import condition="some.property.name" resource="some-context.xml"/>
Если свойство разрешен (в булево), и когда истинный контекст импортируется, в противном случае это не так.
Некоторые из моих исследований до сих пор:
Написание пользовательских NamespaceHandler (и связанные с ним классы), так что я могу зарегистрировать свой собственный элемент в моем собственном пространстве имен. Например:
<myns:import condition="some.property.name" resource="some-context.xml"/>
Проблема с этим подходом заключается в том, что я не хочу реплицировать всю логику импорта ресурсов из Spring, и для меня не очевидно, что мне нужно делегировать для этого.
- Переопределение
DefaultBeanDefinitionDocumentReader
для расширения поведения синтаксического анализа и интерпретации элемента «импорт» (что происходит там в методеimportBeanDefinitionResource
). Однако я не уверен, где я могу зарегистрировать это расширение.
Вместо того, чтобы выполнять условный импорт, почему бы не использовать сканирование путей класса и не использовать только требуемую конфигурацию? Я считаю, что условный импорт более сложный, и сложнее определить, что/не настроено при просмотре развернутого приложения. – SteveD
Как определить «требуемую конфигурацию»? У нас есть части функциональности, которые хорошо модулярны и автоматически активируются при загрузке контекста (шаблон доски). Но нам нужен механизм для динамического (чтение: при установке/настройке времени) активировать и деактивировать эти функции. Это своего рода легкая система плагинов. –