office xml handler什么意思_Dubbo系列笔记之XML配置文件解析流程

这篇博客详细介绍了Dubbo如何通过XML配置文件解析流程创建BeanDefinition,并在Spring中注册和实例化Bean。从约束文件schema、spring.handlers和spring.schemas,到DubboNamespaceHandler、DubboBeanDefinitionParser,再到BeanDefinition和BeanDefinitionRegistry,最后探讨了bean的实例化过程。文章深入浅出地阐述了整个流程,帮助读者理解Dubbo和Spring的集成机制。
摘要由CSDN通过智能技术生成
e42e9dd9135c6a434acc26d650dbe55b.png

简单叨叨一下Dubbo是如何自定义标签给spring承载bean的。

Spring通过XML解析程序将其解析为DOM树,通过NamespaceHandler指定对应的Namespace的BeanDefinitionParser将其转换成BeanDefinition。再通过Spring自身的功能对BeanDefinition实例化对象。Dubbo做的只是实现了NamespaceHandler解析成BeanDefinition。

好了,总结起来就这么简单,下面我们具体来看一下。

一、约束文件schema

下面是一个标准的文件头的格式

51ba8b7717faca914c7776f8c9c07037.png

首先自定义的标签会有一些约束规范,比如我自定义的有哪几种标签,标签里面有哪些属性等等,在XML中每个命名空间都会有一个.xsd的约束文件。

81839e998215a913d71d1e93bbc7ab98.png

一个约束文件.xsd长得像下面这样

bc7a5e65208136f2c1588bf0f0587ea1.png

里面限制自定义的标签里面有哪些属性,属性的类型是什么啊这种。

二、spring.handlers和spring.schemas

当spring解析xml时遇到自定义的标签时,会调用 BeanDefinitionParserDelegate.parseCustomElement(...) 方法,如下:

4d1897dc709210b02d9db66983a3c8e0.png

可以看到接下来通过 DefaultNamespaceHandlerResolver.resolve(String namespaceUri) 获得对应的Dubbo处理器。这个namespaceUri就是bubbo的命名空间uri,spring会去查找名字为spring.handlers的文件,里边配置了命名空间对应的handler,如下面:

spring会加载spring.handlers和spring.schemas这两个文件,两个文件长下面这样

❀  spring.schemas:里面指定了该标签的约束文件本地路径,在解析XML文件时将XSD重定向到本地文件,避免在解析XML文件时需要上网下载XSD文件。通过实现org.xml.sax.EntityResolver接口来实现该功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值