SpringIOC源码分析(五)__IOC容器的初始化__资源加载

一、IOC容器初始化过程

IOC容器初始化是由如上篇所讲到的refresh(),方法来启动的,启动包括BeanDefinition的Resource定位,载入和注册这个主要过程。

SpringIOC源码分析(五)__IOC容器的初始化__资源加载

  1. 过程一:resource定位,是由resourceLoader通过getResource(String location) 的接口来完成的。SpringIOC源码分析(五)__IOC容器的初始化__资源加载
  2. 过程二:将用户定义的Bean表示为IOC容器的内部数据结构BeanDefinition。
  3. SpringIOC源码分析(五)__IOC容器的初始化__资源加载
  4. IOC容器注册这些BeanDefination到容器。通过调用BeanDefinitonRegisty实现Bean的注册SpringIOC源码分析(五)__IOC容器的初始化__资源加载

二、Resource定位的解读

 首先这张图从左往右看,我们首先看到两个3个容器,BeanFactoy和它派生出的ApplicatoinContext,DefalutListableBeanFactoy。

 DefalutListableBeanFactoy是一个功能完整纯粹的IOC容器,需要为他配置对应的资源加载器,才能加载到对应的Bean。使用DefalutListableBeanFactoy这种更底层的容器,能提高定制IOC容器的灵活性。

 ApplicatoinContext容器就已经提供了各种高级的功能,包括ResourceLoader,ResourceLoader派生出了3中加载Resource的方式。

  • classPathXmlApplicationContext 可以从Class path载入Resource 
  • xmlWebApplicationContext 从Web容器载入
  • fileSystemXmlApplicationContext 从文件系统载入

SpringIOC源码分析(五)__IOC容器的初始化__资源加载

完整的类图:

SpringIOC源码分析(五)__IOC容器的初始化__资源加载