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