Spring Ioc: refresh、prepareRefre

2020-12-14  本文已影响0人  逗逗罗
前言

在文章 ApplicationContext 体系结构 中我们从一张 ApplicationContext 体系的类图开始,介绍了 ApplicationContext 体系中各个类的继承关系,接着分析了 ClassPathXmlApplicationContext 和 AnnotationConfigApplicationContext 类的构造函数中前两个函数的源码。从本篇文章开始,将重点介绍 refresh 函数。

总结

本篇文章中首先对 refresh 函数源码进行了简单的分析,了解了各个函数大概的作用,然后针对 prepareRefresh 和 obtainFreshBeanFactory 函数做了详细的分析。

  1. prepareRefresh
    在该函数中进行了一些容器刷新的准备,如记录容器启动时间、定义早期事件的监听器等
  2. obtainFreshBeanFactory
    AbstractApplicationContext 中该方法为空,在其子类 AbstractRefreshableApplicationContext 和 GenericApplicationContext 中对该方法进行了扩展。
    • AbstractRefreshableApplicationContext
      方法中首先定义了 beanDefinitionReader,然后读取配置文件将配置文件中定义的 Bean 信息加载为 BeanDefinition,需要注意的是其中包含一些自定义命名空间的解析。
    • GenericApplicationContext
      仅做了refresh 标记的判断以及序列化 ID 的设置
上一篇下一篇

猜你喜欢

热点阅读