SpringIOC源码解读(大纲)

Spring核心IOC源码解读

  前言:Spring IOC容器是Spring核心的模块,阅读源码了解它的运行机制,可以更深刻地理解Spring中bean的生成原理、生命周期等。更可以了解各个Spring中接口的作用,对其理解并加以运用。

使用XML文件的方式创建SpringBean容器

 ClassPathXmlApplicationContext父类结构图

    ClassPathXmlApplicationContext 在new对象初始化时,调用 refresh() 方法,此方法为父类 AbstractApplicationContext 的方法。这里用了一个设计模式: 模板方法模式 。

AbstractApplicationContext.refresh()

 prepareRefresh(); 

  做一些简单的初始化操作

  1.校验环境参数;

  2.初始化early集合;

 ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); 获取BeanFactory

  这步很重要,初始化了beanFactory,还解析了xml文件从中定义了对象的BeanDefinition。

  详解链接:Spring核心IOC源码解读(一)获取BeanFactory

 AbstractApplicationContext.prepareBeanFactory(); 准备BeanFactory

  为BeanFactory做准备,初始化一些属性,包括:SpEL解析器、属性注册器、Bean后置处理器、系统环境属性

  详解链接:Spring核心IOC源码解读(二)为BeanFactory准备数据

 AbstractApplicationContext.invokeBeanFactoryPostProcessors(beanFactory) 引用BeanFactoryPostProcessors实现类的postProcessBeanFactory(beanFactory)方法

   这一步主要是执行实现了BeanFactoryPostProcessors接口postProcessBeanFactory()方法,在获取到bean对象之后,执行此方法

   详解链接:Spring核心IOC源码解读(三)实现BeanFactoryPostProcessors接口的postProcessBeanFactory方法

 AbstractApplicationContext.registerBeanPostProcessors(bean, beanName) 调用BeanPostProcessor实现类的postProcessAfterInitialization(bean, beanName)方法

  在获取到Bean对象之后,执行此方法,和(三)种的逻辑类似,也是进行了排序。

SpringIOC核心getBean()方法

  这个方法是SpringIOC的核心,包括了使用对象的创建(反射),对象的依赖(多级缓存),对象的生命周期实现等。

  详解:

原文地址:https://www.cnblogs.com/lcmlyj/p/13361677.html