我想实现的是“动态”(即基于配置文件中定义的属性)启用/禁用导入子级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 2010-06-14 08:20:26
如何定义“所需配置”?我们有部分功能很好地模块化,并在上下文加载时自动激活(白板模式)。但是我们需要一种机制来动态(读取:在安装/配置时)激活和停用这些功能。它是一种轻量级的插件系统。 – 2010-06-14 08:34:08