前言
根据 refresh 流程,当 执行结束后,下一步会执行 ,顾名思义,这个方法主要是,下面一起看一看这部分逻辑。
prepareBeanFactory
这块代码比较长,但是逻辑比较简单,就直接贴代码了。
再对代码进行分析,主要经历以下几个阶段:
addBeanPostProcessor 添加 BeanPostProcessor
registerResolvableDependency 注册依赖关系
registerSingleton 注册其他的单例 Bean
下面可以 Debug 看一下。
Debug
方法调用前:
registerResolvableDependency 执行之后
这里发现调用 执行结束之后, 中并没有多添加相关对象。
查看源码发现其实是添加到了 这个 Map 中了。
"
回顾
在介绍 时,说 BeanDefinition 是存储在 beanDefinitionMap 中的。而这里的依赖关系是则是存储在 中的。
postProcessBeanFactory
在执行 prepareBeanFactory 之后,当看到 方法的时候就很疑惑, 因为这个是需要子类实现的,只是作为一个模板方法,子类实现之后,可以在里面添加自己的逻辑。
总结
这篇文章相对比较简单,就是准备 BeanFactory 向其中添加系统的依赖以及 bean, 而 postProcessBeanFactory 则是一个模版方法用来供子类实现。
- -
领取专属 10元无门槛券
私享最新 技术干货