【Spring】—— IoC 之加载 Bean:创建 Bean(五)之循环依赖处理
这篇分析 #doCreateBean(...) 方法的第三个过程:循环依赖处理。其实,循环依赖并不仅仅只是在 #doCreateBean(...) 方法中处理,而是在整个加载 bean 的过程中都有涉及。
这篇分析 #doCreateBean(...) 方法的第三个过程:循环依赖处理。其实,循环依赖并不仅仅只是在 #doCreateBean(...) 方法中处理,而是在整个加载 bean 的过程中都有涉及。
#doCreateBean(...) 方法,主要用于完成 bean 的创建和初始化工作,我们可以将其分为四个过程。
#createBeanInstance(String beanName, RootBeanDefinition mbd, Object[] args) 方法,用于实例化 Bean 对象。
这篇我们关注创建 bean 过程中的第一个步骤:实例化 bean,对应的方法为 #createBeanInstance(String beanName, RootBeanDefinition mbd, Object[] args)
在上篇博客 《【 Spring】—— IoC 之加载 Bean:分析各 scope 的 Bean 创建》 中,有一个核心方法没有讲到, #createBean(String beanName, RootBeanDefinition mbd, Object[] args) 方法。
在 Spring 中存在着不同的 scope,默认是 singleton ,还有 prototype、request 等等其他的 scope
如果从单例缓存中没有获取到单例 Bean 对象,则说明两种两种情况。
从这篇博客开始我们开始加载 Bean 的第一个步骤,从缓存中获取 Bean 。
Spring IoC 容器所起的作用如上图所示,它会以某种方式加载 Configuration Metadata,将其解析注册到容器内部,然后回根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统。
前面 13 篇博文从源码层次,分析了 IoC BeanDefinition 装载的整个过程,这篇就这些内容做一个总结将其连贯起来。