spring解析xml文档源码解析

xml文档的解析有两种形式:DOM解析和SAX解析,以前一直都听说spring解析xml是DOM解析,最近闲着没事翻看了spring的源码,对解析过程有了一点了解,做个记录。

spring的对象创建时由工厂完成的,顶级接口是BeanFactory,现在比较常用的是ApplicationContext。主要区别的Beanfactory只有在用到具体对象是才会创建出来,ApplicationContext在初始化spring容器时就会解析配置文件,并把所有对象创建出来。
这里研究了一下ApplicationContext的实现类XmlApplicationContext解析配置文件过程。整个过程设计的类和方法较多,这里只简单列出调用过程。

ClassPathXmlApplicationContext 构造方法
AbstractApplicationContext refresh()
获取工厂对象
AbstractApplicationContext obtainFreshBeanFactory()
AbstractRefreshableApplicationContext refreshBeanFactory()
加载配置文件(xml文件)
AbstractXmlApplicationContext loadBeanDefinitions(DefaultListableBeanFactory beanFactory)
AbstractXmlApplicationContext loadBeanDefinitions(XmlBeanDefinitionReader reader)
AbstractBeanDefinitionReader loadBeanDefinitions(String… locations)
AbstractBeanDefinitionReader loadBeanDefinitions(String location,Set actualResources)
AbstractBeanDefinitionReader loadBeanDefinitions(Resource… resources)
XmlBeanDefinitionReader loadBeanDefinitions(EncodedResource encodedResource)
以流的形式读取配置文件内容
XmlBeanDefinitionReader doLoadDocument(InputSource inputSource, Resource resource)
XmlBeanDefinitionReader doLoadBeanDefinitions(InputSource inputSource, Resource resource)
开始注册bean
XmlBeanDefinitionReader registerBeanDefinitions(Document doc, Resource resource)
DefaultBeanDefinitionDocumentReader registerBeanDefinitions(Document doc, XmlReaderContext readerContext)
DefaultBeanDefinitionDocumentReader doRegisterBeanDefinitions(Element root)
解析具体每一个bean标签内容并实例化对象
DefaultBeanDefinitionDocumentReader parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate)
DefaultBeanDefinitionDocumentReader parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate)
DefaultBeanDefinitionDocumentReader processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate)
BeanDefinitionParseDelegate parseBeanDefinitionElement(Element ele, @Nullable BeanDefinition containingBean)
BeanDefinitionParseDelegate parseBeanDefinitionElement(Element ele, String beanName, @Nullable BeanDefinition containingBean)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值