一、背景
在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry
看到这两个变量
dependentBeanMap
: 本bean是其他bean的外部依赖,本bean是底层,别的bean需要本bean才能活下去。dependenciesForBeanMap
: 外部依赖,本bean依赖于外部依赖。
二、结构
依赖关系如下图所示
dependentBeanMap(反向依赖)
- 存放的是
dependent bean
- 结构
Map<String, Set<String>> dependentBeanMap = { "beanA": ["beanB", "beanC"], // beanB, beanC 依赖 beanA "beanB": ["beanD"] // beanD 依赖 beanB };
- 当 bean 被销毁时,通过 dependentBeanMap 找到依赖它的所有 bean,触发这些 bean 的销毁。
dependenciesForBeanMap(正向依赖)
- 存放的是
dependency bean
- 结构
Map<String, Set<String>> dependenciesForBeanMap = { "beanB": ["beanA"], // beanB 依赖 beanA "beanC": ["beanA"], // beanC 依赖 beanA "beanD": ["beanB"] // beanD 依赖 beanB };
- 初始化 bean 阶段,根据这个 map 确认依赖是否已经就绪,因为需要确保依赖先就绪,再初始化本 bean
三、dependent bean
那么dependent bean
的中文释义是如何翻译的呢?
依赖者。就是依赖某个bean的bean。
dependency: 被依赖者。 例如项目pom文件中那些外部的依赖包,它们都是被依赖者,本项目依赖外部的那些依赖,它们不会依赖于本项目。