Spring源码学习(1) ---Spring解析XML过程

Spring对XML配置文件的加载过程

参考:《Spring源码深度解析》

环境搭建需要:spring-core,spring-beans

一般最常见的使用BeanFactory获取Bean的方法如下(XmlBeanFactory现已被弃用)

public void testLoad(){
	BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("filePath"));
    ObjectBean oBean = (ObjectBean)beanFactory.getBean("beanName");
}

xml文件写为

<?xml  version="1.0"  encoding="UTF-8"?>
<beans  xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

    <bean id="beanName" class="Beans.MyTestBean"/>

</beans>

其中XmlBeanFactory继承自DefaultListableBeanFactory(Bean加载的核心类)
DefaultListableBeanFactory(Bean加载的核心部分):综合下面的所有功能,主要是对bean注册后的处理
		extends: 
			AbstractAutowireCapableBeanFactory
				AbstractBeanFactory
				ConfigurableBeanFactory(1):提供配置Factory的各种方法
		implements:
			ConfigurableListableBeanFactory
				AutowireCapableBeanFactory:提供创建bean,自动注入,初始化及应用bean后的处理器
				ConfigurableBeanFactory(1)同
				ListableBeanFactory:根据各种条件获取bean的配置清单
			BeanDefinitionRegistry
				AliasRegistry:定义alias的简单增删改查等操作
			Serializable
第一步:读取Bean的配置文件(XML)

new ClassPathResource(“filename”);
ClassPathResource类的继承结构ClassPathResource(String filename)方法,通过传入文件名,将文件内容封装为Resource,并且记录其他信息(文件路径,类加载器,类对象(不知道这个的作用是什么))。Spring通过Resources接口抽象了Spring使用的内部资源:File,URL,ClassPath。将Resource传入XmlBeanFactory()中。

第二步:开始处理Resource

new XmlBeanFactory(Resource resource) 这里简化为传入一个 Resource对象

第三步:解析Document,注册Bean
总体流程:

总体执行流程3/17日更,上图第7步骤

(DefaultBeanDefinitionDocumentReader类  L58 ) protected void doRegisterBeanDefinitions(Element root)  

(L76 )this.parseBeanDefinitions(root, this.delegate);

(L87 )protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate)

(L96 )this.parseDefaultElement(ele, delegate);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值