Spring自定义标签解析

写在前面

在学习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的解析过程。

上一篇:每天一个设计模式之代理模式


下一篇:JAVA8--Stream学习