在哪里寻找 Spring XML 命名空间配置的确切效果?
Posted
技术标签:
【中文标题】在哪里寻找 Spring XML 命名空间配置的确切效果?【英文标题】:Where to look for exact effects of Spring XML namespaces configuration? 【发布时间】:2014-08-02 17:45:02 【问题描述】:众所周知,Spring Framework 在 XML 命名空间中有很多配置元素,例如:
<mvc:annotation-config/>
<tx:annotation-driven/>
其中一些做了大量的工作,例如:<http>
Spring Security security
命名空间中的元素。
在哪里可以找到引入特定 XML 元素的所有效果的确切代码(比文档中所说的更多)?
例如 - 如果我想查看在 <security:http>
元素中使用 <security:csrf>
元素引起的确切 Spring 动作,我应该在哪里查看? (添加了哪些过滤器/拦截器/转换器,哪些范围属性可用等)
【问题讨论】:
通常我会调试代码并单步调试 Spring 安全源代码。 【参考方案1】:几乎每个命名空间 (xsd) 在 Spring 的某个地方都有一个对应的 NamespaceHandler
类。元素也是如此,每个元素都有一个对应的BeanDefinitionParser
。
请参阅javadoc 以了解 Spring 本身的可用实现。 Spring Security 可以在here 找到。
现在大多数 Spring 项目通常在 org.springframework.[project].config
包中的某处包含一个命名空间。
【讨论】:
【参考方案2】:简而言之,您必须:
-
创作 XML 架构文件。
使用 NameSpaceHandler
使用 BeanDefinitionParser
在 META-INF 中注册处理程序和架构
请参阅this document 了解详细信息
查看这个 jar 以了解 Spring-security 命名空间的详细信息 spring-security-config-x.x.X.RELEASE-sources.jar
【讨论】:
以上是关于在哪里寻找 Spring XML 命名空间配置的确切效果?的主要内容,如果未能解决你的问题,请参考以下文章
错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”
错误“无法找到 XML 模式命名空间的 Spring NamespaceHandler”
spring16-----XML命名空间和Spring配置文件中的头