我想要实现的是"动态"(即基于配置文件中定义的属性)启用/禁用子Spring XML上下文导入的能力.
我想象的是:
<import condition="some.property.name" resource="some-context.xml"/>
Run Code Online (Sandbox Code Playgroud)
解析属性的位置(布尔值)和true时导入上下文,否则不导入.
到目前为止我的一些研究:
编写自定义NamespaceHandler(和相关类),以便我可以在自己的命名空间中注册自己的自定义元素.例如:<myns:import condition="some.property.name" resource="some-context.xml"/>
这种方法的问题在于我不想从Spring复制整个资源导入逻辑,对我来说,我需要委派什么才能做到这一点.
DefaultBeanDefinitionDocumentReader以扩展"import"元素解析和解释的行为(在importBeanDefinitionResource方法中发生).但是我不确定我可以在哪里注册此扩展程序.