Spring-bean源码研读

	最近,研读了spring-beans的源码,深入理解了spring加载beans以及管理beans的原理和实现过程!
	beans是spring框架中主要的核心jar包之一!
	beans中有两个spring最核心的类:DefaultListableBeanFactory 和 XmlBeanDefinitionReader。
	DefaultListableBeanFactory:用于注册和加载spring对象!是其默认实现!
	XmlBeanDefinitionReader:用于读取xml文件
	既然说到读取资源,则不得不说spring的资源加载对象了!在jdk中可以使用URLStreamHandler抽象类及其子类来实现资源的加载!但spring没有使用沿用这种方式,使用了自定义接口Resource及其子类来实现资源的加载,针对不同资源有不同的加载机制,如ClassPathResource、FileSystemResource等等!在通过这些子类将资源加载到jvm之后使用XmlBeanDefinitionReader类及其子类读取解析这些资源!
	总的说来,spring加载并生成对象可以概括为:
	 	1、获取对xml的验证模式
	 	2、加载xml文件,并得到对应的document
	 	3、根据返回的document注册bean对象信息
	一、获取xml的验证模式
			目前,xml的验证模式;DTD和XSD
			通过判断文档中存不存在DOCTYPE,存在是DTD否则是XSD
	二、将xml文件转换成document文档
			知道了验证模式后,我们来解析document文档,xmlBeanDefinitionReader类将解析document文档的工作委托给了documentLoader实现文档的解析!在调用DocumentLoader类解析文档时使用到了EntityResolver类!
			EntityResolver类是用于避免项目通过网络来加载文档验证DTD或XSD
	三、解析并注册beans
			在将xml文档转换成docuemnt对象后,使用xmlBeanDefinitionReader解析并注册beans!具体的解析过程可以参照源码!说到这边基本粗略说完了spring-beans注册对象的工作原理!
	spring中标签的解析
		spring中存在两种标签:默认标签和自定义标签!
		默认标签解析:
				spring中已经对import/alias/bean/beans四种标签,编写了默认解析工具类:DefaultBeanDefinitionDocumentReader.java
		bean的解析和注册工作:
			通过 BeanDefinitionParserDelegate类解析bean标签,生成了BeanDefinitionHolder实例对象!这个实例中包含了配置文件中的各种信息!接下来判断holder中是否有自定义标签并对自定义标签进行解析!之后通过BeanDefinitionReaderUtils中的注册方法,注册生成的bean对象!最后发出相应通知监听器,bean对象加载完成!
			bean中的子元素有meta( 元数据)/lookup-method(获取器注入)/replaced-method()/constructor-org/property/qualifier
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值