Spring是如何加载Xml文件的

Spring是如何加载Xml文件的

这是一个很有意思的话题,在我刚学习spring框架的时候是使用Junit测试配置的DataSource是否配置成功,那时候要写一段这样的代码来加载我们配置好的XML文件:

@Test
public void loadXML(){

    ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    factory.getBean("DataSource");

}

当然我们现在很少使用这种方式手动去加载一个XML文件了,现在大部分的Spring项目大部分是使用SpringBoot了,减少了不少之前springMVC项目中各种繁杂的配置项,以后就是springBoot的天下了,当然这个另作一说了;

最近看了一些spring底层运行的书,对着一块也是有了更深入的了解,spring是如何加载properties文件和XML文件的;

核心实现代码

1.DefaultListableBeanFactory类

package org.springframework.beans.factory.support;下的
DefaultListableBeanFactory类是这是Spring注册及加载的核心部分,是spring注册及加载bean的默认的实现,而XmlBeanFactory是继承自DefaultListableBeanFactory他们的区别是XmlBeanFactory中有一个自己定义的xml读取器(using an XmlBeanDefinitionReader),而这个读取的方式是根据XML Document方式来实现的;

当然这就涉及到XML解析的两个方式:一种就是当前说到的这种XML Doucument的方式,解析的过程中是通过读取XML Doucument 这相当于XML文档的约定格式的规范;


上面的方法就是XmlBeanDefinitionReader中加载document的方法

还有一种方式是读取当前文档自己自带的结构格式规范,来解析XML文件,感兴趣的话可以自己下去查询一下;

2.XmlBeanDefinitionReader类

加载过程:

1.使用ResourceLoader将资源文件加载到对应的Resource

2.通过DocumentLoader对文件进行转换,将resource文件转换成document

3.通过实现的接口对Document进行解析,使用BeanDefinitionParserDelegate对Element进行解析

这是我在网上找的的XmlBeanFactory运行的时序图:

联系我们一开始写的那段代码,我们首先是调用了ClassPathResource的构造函数来构造Resouce文件的实例化,然后拿到Resuorce之后就可以进行XmlBeanFactory的初始化了;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值