在哪里寻找 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配置文件中的头

错误配置:找不到 XML 模式命名空间的 Spring NamespaceHandler

XML配置文件的命名空间与Spring配置文件中的头

Spring装配Bean---使用xml配置