如何在Spring XML上下文中实现条件资源导入?
我想实现的是“动态”(即基于配置文件中定义的属性)启用/禁用子Spring XML上下文导入的能力。
我想象这样的事情:
<import condition="some.property.name" resource="some-context.xml"/>
如果属性被解析(解析为布尔值),当为 true 时,将导入上下文,否则则不导入上下文。
到目前为止,我的一些研究:
-
编写自定义命名空间处理程序(和相关类),以便我可以在自己的命名空间中注册自己的自定义元素。例如:
<myns:import condition="some.property.name" resource="some-context.xml"/>
这种方法的问题在于,我不想从Spring复制整个资源导入逻辑,而且对我来说,我需要委派什么来执行此操作并不明显。
-
重写以扩展“import”元素解析和解释的行为(在方法中发生)。但是,我不确定在哪里可以注册此扩展名。
DefaultBeanDefinitionDocumentReader
importBeanDefinitionResource