Spring 是如何解决循环依赖的?
什么是循环依赖,以及 Spring 是如何解决循环依赖的?
Spring 源码学习 16:单例 Bean 创建
在 finishBeanFactoryInitialization 中介绍了创建 Bean 的流程大概流程,这里进入单例 Bean 的创建过程。
Spring 源码学习 15:finishBeanFactoryInitialization(重点)
可以说前面的都是准备工作,而接下来开始的才是重点,在这一步会完成 BeanFactory 的初始化,同时实例化单例 Bean。
Spring 源码学习 14:initApplicationEventMulticaster 、onRefresh 和 registerListeners
上一篇介绍了国际化的使用以及初始化消息源的源码,接下来接着往下阅读,将进入 initApplicationEventMulticaster 、onRefresh 和 registerListeners 的相关操作逻辑。
Spring 源码学习 13:initMessageSource
在阅读完 registerBeanPostProcessors 源码之后, 下一步就进入到 initMessageSource,这一步主要作用是初始化国际化文件。
Spring 源码学习 12:registerBeanPostProcessors
这一步主要的作用是加载 BeanPostProcessor,从名字也可以看出,只是加载,并没有执行。
Spring 源码学习 11:invokeBeanFactoryPostProcessors
invokeBeanFactoryPostProcessors 会执行 BeanFactory 的后置处理器。
Spring 源码学习 10:prepareBeanFactory 和 postProcessBeanFactory
根据 refresh 流程,当 obtainFreshBeanFactory 执行结束后,下一步会执行 prepareBeanFactory ,顾名思义,这个方法主要是准备 BeanFactory,下面一起看一看这部分逻辑。
Spring 源码学习 09:refresh 大概流程
前面的准备工作结束之后,就是进入核心代码 refresh。
Spring 源码学习 08:register 注册配置类
context.register(JavaConfig.class);