Spring XML 命名空间 : How do I find what are the implementing classes behind them?

标签 spring spring-mvc spring-security

在我的 Spring 3.1 应用程序中,有时我需要更改上下文文件中某些 Spring 命名空间的默认行为。为此,我创建了实现某些接口(interface)或扩展 Spring 使用的默认类的自定义类。

但我发现很难确切知道 Spring 在其命名空间后面使用的那些类是什么!找到它们需要哪些步骤?

例如,安全命名空间:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:sec="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                           http://www.springframework.org/schema/security 
                           http://www.springframework.org/schema/security/spring-security-3.1.xsd">

类似的东西:

<sec:http>
    ...
    <sec:logout />
</sec:http>

如何找到“”命名空间使用了哪些类?我没有通过查看 http://www.springframework.org/schema/security/spring-security-3.1.xsd 找到信息!

我应该去哪里看?

最佳答案

每个 Spring 命名空间都有一个关联的 NamespaceHandler执行。命名空间模式映射到 Spring JAR 中各种 spring.schemas 文件中的模式文件(另见 Spring DI applicationContext.xml how exactly is xsi:schemaLocation used?)。

XML 模式命名空间也映射到 spring.handlers 文件中的处理程序类(因为每个 Spring JAR 可能会引入不同的命名空间)。为方便起见,这里列出了最常见的命名空间:

Spring 芯

Spring 安全

Spring 集成

如果您浏览每个类的源代码,您会很快发现负责解析实际 XML 定义的各种 BeanDefinitionParser 实现。

关于Spring XML 命名空间 : How do I find what are the implementing classes behind them?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174286/

相关文章:

java - 填充和导入 Excel 电子表格的 UI 替代方案

java - 如何创建存储库类的 bean

java - 如何使用JPA持久化LocalDate?

java - 测试上下文中的 "Could not open ServletContext resource"

java - simpMessagingTemplate convertAndSendToUser 大量等待线程阻塞其他功能

java - Jackson,反序列化嵌套对象

spring-mvc - Kotlin如何使用assertj创建自定义断言

java - 这个 Spring Security 图意味着什么?

spring-security - 社交登录,spring-security-oauth2 和 spring-security-jwt?

java - 与基本身份验证一起使用时,SwitchUserFilter 在 Spring security 中不起作用