一、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容器的初始化__资源加载

 

 

 

相关文章:

  • 2021-11-08
  • 2022-01-19
  • 2021-12-18
  • 2021-10-19
  • 2021-06-05
  • 2021-05-22
  • 2021-11-11
  • 2021-07-27
猜你喜欢
  • 2021-04-19
  • 2021-06-05
  • 2021-07-22
  • 2021-10-25
  • 2021-08-09
  • 2021-08-21
  • 2022-01-31
相关资源
相似解决方案