美文网首页
Spring源码学习系列(二)之xml标签解析

Spring源码学习系列(二)之xml标签解析

作者: just_like_you | 来源:发表于2019-07-02 14:45 被阅读0次

    上一篇说完了加载xml信息到Document对象

    源码如下,接着上篇,开始registerBeanDefinitions(Document doc,Resource resource)

    image.png

    来到解析Document对象标签的核心逻辑

    进入 doRegisterBeanDefinitions.parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate)方法

        protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) {
            if (delegate.isDefaultNamespace(root)) {
                NodeList nl = root.getChildNodes();
                for (int i = 0; i < nl.getLength(); i++) {
                    Node node = nl.item(i);
                    if (node instanceof Element) {
                        Element ele = (Element) node;
                                    //如果是默认的(import,beans,bean ...)名称空间则使用默认的解析方法解析
                        if (delegate.isDefaultNamespace(ele)) {
                            parseDefaultElement(ele, delegate);
                        }
                                  // 解析自定义信息(<tx :annotation-dri ven/> ..)
                        else {
                            delegate.parseCustomElement(ele);
                        }
                    }
                }
            }
            else {
                delegate.parseCustomElement(root);
            }
        }
    

    其中会对默认标签(import,bean,beans ...) 进行默认的标签解析 parseDefaultElement(ele,delegate)
    以及对自定义标签的解析(<Context:annotation-config /> <tx:annotation-driver /> ..),最后将得到BeanDefinition通过BeanDefinitionRegistry.registerBeanDefinition()方法将bean定义信息注册到容器中,
    其中通过BeanDefinitionParserDelegate中的一系列方法将Xml中的属性解析到AbstractBeanDefinition类中

    由于XML的配置方式使用越来越少,具体每个标签是如何解析的,就不继续深入。有需要的可以自行探究。

    相关文章

      网友评论

          本文标题:Spring源码学习系列(二)之xml标签解析

          本文链接:https://www.haomeiwen.com/subject/nodrcctx.html