Spring IOC初始化过程

Spring IOC初始化过程——源码解读

Spring IOC的核心是BeanFactory

其实SpringIOC初始化的过程就是准备好BeanFactory的过程。

(1)定位并获取资源文件

ClassPathResource res = new ClassPathResource("my/applicationContext.xml");

因为对象和对象之间的关系存储在xmlproperties等语义化配置文件中,首先要定位到配置文件。用资源加载器ResourceLoader将资源文件路径转换为对应的Resource

(2)解析资源文件

XmlBeanFactory bf = new XmlBeanFactory(res);

步骤:

1.构造BeanFactory时,首先调用的是BeanDefinitionReader类型的reader属性的loadBeanDefinitions()方法,是整个资源加载的切入点。

  • 封装资源文件:当进入BeanDefinitionReader后首先对参数Resource进行EncodedResource类进行封装
  • 获取输入流:从Resource中获取InputStream并构造InputSource
  • 通过构造器的InputSource实例和Resource实例继续调用loadBeanDefinitions.

2.loadBeanDefinition调用doLoadBeanDefinitons方法,完成以下三个方法

  • XML文档的验证模式
  • DocumentLoader处理资源文件,生成Document
  • 根据返回的Document信息注册bean信息
首先调用BeanDefinitonDocumentReaderdoRegisterBeanDefinitions去注册bean定义信息
 通过实现接口BeanDefinitionDocumentReaderDefaultBeanDefinitionDocumentReader类的parseBeanDefinitions来解析Document,从xml文档根节点递归循环处理各个节点,实际上使用BeanDefinitionParserDelegateparseBeanDefinitionElement方法将bean节点转换为BeanDefinitionHolder对象,完成最终的解析

(3)注册

DefaultListableBeanDefiniton.registerBeanDefiniton利用解析好的BeanDefinition对象完成最终的注册。将beanNameBeanDefinition作为键值放到了beanFactorymap

Spring核心类BeanFactory,框架图


展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值