Spring自定义标签解析-阿里云开发者社区

开发者社区> 米雅友> 正文

Spring自定义标签解析

简介: 写在前面 自定义标签配置步骤 其它自定义标签 写在前面 在学习spring源码的过程中,发现自己对自定义标签使用的较少,所以记录下自定义标签的使用方法。例子是书《Spring源码深度解析》上的例子,由于没有找到书的源码,就手敲了一遍代码,顺便记录下使用方法。 代码下载地址:https://github.com/LQZYC/SpringCust
+关注继续查看

写在前面

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
spring boot redis 自定义序列化方式(fastJson)
spring boot redis 自定义序列化方式(fastJson)
3848 0
Springboot自定义异常处理
1.自定义异常类 import lombok.Data; @Data public class UserException extends RuntimeException { private Long id; public UserException(Long id) { super("user not exist"); this.
1171 0
小程序如何实现自定义标题栏(头部导航栏)
首先,我们需要了解如何设置标题栏透明:[url]https://openclub.alipay.com/read.php?tid=13793&fid=101[/url]; 以及如何获取状态栏和标题栏高度:[url]https://openclub.alipay.com/read.php?tid=13796&fid=101&page=1[/url]。
4224 0
SpringBoot自动装配原理解析
本文包含:SpringBoot的自动配置原理及如何自定义SpringBootStar等 我们知道,在使用SpringBoot的时候,我们只需要如下方式即可直接启动一个Web程序: @SpringBootApplication public class DemoApplication { p...
11287 0
系统变量与自定义变量
1、系统变量 [root@passion ~]# env             #查看系统变量 [root@passion ~]# echo $HOSTNAME       #查看变量 passion [root@passion ~]# set            #系统...
739 0
spring aop 注入源码解析
spring aop 注入源码解析
1992 0
Spring Boot 自定义starter
一、简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能。
1236 0
+关注
16
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载