如何在Spring中获取任何XML命名空间的底层bean配置?

时间:2012-05-08 00:23:52

标签: xml spring xsd xml-namespaces

这是否遵循XML的通用命名空间设计模式,以便我可以精确地推断出哪些bean属于哪个命名空间?如果没有,我如何检查底层API以进行准确评估?

1 个答案:

答案 0 :(得分:1)

你可以找到,但你必须深入研究一些代码。处理命名空间的入口点是org.springframework.beans.factory.xml.NamespaceHandler的实现。此实现通常会设置许多org.springframework.beans.factory.xml.BeanDefinitionParser实现来处理该命名空间中的各种顶级元素。

NamespaceHandler实现通常根据它们支持的模式命名,但不能保证。要毫无疑问地确定哪个处理程序对于给定的命名空间是可重用的,您需要找到定义该命名空间处理程序的spring.handlers文件。该文件将位于包含jar的META-INF文件夹中。

例如: 在spring-tx- [version] .jar的META-INF文件夹中,有一个spring.handlers文件,其中包含以下行:

http\://www.springframework.org/schema/tx=org.springframework.transaction.config.TxNamespaceHandler

也就是说,tx命名空间由TxNamespaceHandler处理。如果您查看该处理程序的源代码,请在init()中看到

registerBeanDefinitionParser("advice", new TxAdviceBeanDefinitionParser());

表示{x}处理spring xml中的<tx:advice>语句。{1}}。您可以以类似的方式深入查看任何org.springframework.transaction.config.TxAdviceBeanDefinitionParserspring.handlers