在Spring中存在着不同的scope,默认是singleton,还有prototype、request等其他的scope,本篇文章将进行不同作用域实例创建的解析。
spring源码解析之 18 parentBeanFactory与依赖处理
从上篇文章中我们可以得知,如果从单例缓存中没有获取到单例bean,则会说明是下面俩种情况发生:
- 该bean的scope是singleton ,但是没有初始化完成
- 该bean的scope不是singleton
本篇文章就来进行这部分的分析,这里先讲循环依赖检测、parentBeanFactory与依赖处理,剩下的scope处理,主要在下一篇文章中讲解。
spring源码解析之 17 缓存中获取单例bean
从这篇博客开始我们开始加载bean的第一个步骤,从缓存中获取bean,代码片段如下:
1 | Object sharedInstance = getSingleton(beanName); |
首先调用getSingleton()
从缓存中获取单例bean,在上篇博客提到过,Spring对单例模式的bean只会创建一次,后续如果再获取该bean则是直接从单例缓存中获取,该过程就体现在getSingleton()
中。如下: