写在前面
在学习spring
源码的过程中,发现自己对自定义标签使用的较少,所以记录下自定义标签的使用方法。例子是书《Spring源码深度解析》上的例子,由于没有找到书的源码,就手敲了一遍代码,顺便记录下使用方法。
代码下载地址:https://github.com/LQZYC/SpringCustomElementLearn.git
自定义标签配置步骤
- 创建一个需要扩展的组件。
- 定义一个xsd文件描述组件内容。
- 创建一个文件,实现BeanDefinitionParser接口,用来解析xsd文件中的定义和组件定义。
- 创建一个handle文件,扩展自NamespaceHandlerSupport,目的是将组件注册到spring容器。
- 编写spring.handlers和spring.schemas文件,这两个文件的存放位置默认在工程的/META-INF/文件夹下。
按照以上步骤,参考源代码会很容易理解。
其它自定义标签
spring本身包括很多自定义标签,如<aop:aspectj-autoproxy>
、<tx:annotation-driven>
等。要查看这些标签如何解析的,只需要在spring工程中全局搜索对NamespaceHandlerSupport进行扩展的类。如aop标签的处理类为AopNamespaceHandler,其中有一段代码registerBeanDefinitionParser("aspectj-autoproxy", new AspectJAutoProxyBeanDefinitionParser())
,从而我们可以阅读AspectJAutoProxyBeanDefinitionParser类来了解aop的解析过程。