spring源码学习(三)解析beanDefinition----xml的解析

该方法是解析beanDefinition的入口,这个方法的调用链很长也很复杂

 

     1)、创建beanDefinitionReader类

  2)、设置环境参数,在后续调用的时候会用到

  3)、设置实体解析器,这里的实体主要是指的xml配置文件内的标签

    在加载实例化PluggableSchemaResolver这个类时,我们在debug调试的时候,在控制台会看到有个属性schemaMappings已经加载回来了,但是没有显示调用位置。辗转反侧查看后发现居然在toString里有过一次加载,很奇怪。我在有一篇随笔里专门写过这个情况。https://www.cnblogs.com/banzhuandang/p/16162922.html

  4)、初始化beanDefinitionReader,在本类中是一个空的实现,可以在子类中进行扩展

loadBeanDefinition方法到真正的解析xml中的调用过程

  xml的解析也分为两个部分

  1)、默认命名空间下的节点解析,也就是beans命名空间

    

    当节点名称是如下四个时,走各自的分支流程解析,这里边会涉及到一些递归调用,以及把解析到的beanDefinition注册到beanfactory中

    

 

   2)、额外的命名空间的标签解析,这里边的子类实现很多,基本逻辑也和默认命令空间的标签解析一致。主要目的把xml中的每一个标签和属性解析到我们beanDefinition对象中,并注册到beanfactory

    

 

posted @ 2022-07-10 22:20  搬砖党路过  阅读(61)  评论(0编辑  收藏  举报