经过上几篇文章的分析,已经将IOC初始化分析完了,在此做一个总结。
依然搬出一段代码:

1
2
3
4
5
6
7
8
//资源定位
ClassPathResource resource = new ClassPathResource("bean.xml");
//bean工厂
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
//xml BeanDefinition 阅读器
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);
//加载与注册BeanDefinition,完成后的BeanDefinition放置在IOC容器中。
reader.loadBeanDefinitions(resource);

这段代码描述了IOC初始化的流程:

  • Resource的定位与加载
  • BeanDefinition的载入解析
  • BeanDefinition的注册

1、Resource定位与加载

Spring 为了解决资源定位的问题,提供了两个接口:Resource、ResourceLoader,其中 Resource 接口是 Spring 统一资源的抽象接口,ResourceLoader 则是 Spring 资源加载的统一抽象。

2、BeanDefinition的载入解析

首先将Resource解析为Document对象,之后依次解析xml中定义的Bean。

3、BeanDefinition的注册

将封装好的BeanDefinition注册到IOC容器中。

IOC初始化总结.png

tencent.jpg