dependentBeanMap and dependenciesForBeanMap

2025/04/23

一、背景

org.springframework.beans.factory.support.DefaultSingletonBeanRegistry看到这两个变量

二、结构

依赖关系如下图所示

dependentBeanMap(反向依赖)

  1. 存放的是dependent bean
  2. 结构
    Map<String, Set<String>> dependentBeanMap = {
        "beanA": ["beanB", "beanC"],  // beanB, beanC 依赖 beanA
        "beanB": ["beanD"] // beanD 依赖 beanB
    }; 
    
  3. 当 bean 被销毁时,通过 dependentBeanMap 找到依赖它的所有 bean,触发这些 bean 的销毁。

dependenciesForBeanMap(正向依赖)

  1. 存放的是dependency bean
  2. 结构
    Map<String, Set<String>> dependenciesForBeanMap = {
        "beanB": ["beanA"],  // beanB 依赖 beanA
        "beanC": ["beanA"],  // beanC 依赖 beanA
        "beanD": ["beanB"]   // beanD 依赖 beanB
    }; 
    
  3. 初始化 bean 阶段,根据这个 map 确认依赖是否已经就绪,因为需要确保依赖先就绪,再初始化本 bean

三、dependent bean

那么dependent bean的中文释义是如何翻译的呢?

依赖者。就是依赖某个bean的bean。

dependency: 被依赖者。 例如项目pom文件中那些外部的依赖包,它们都是被依赖者,本项目依赖外部的那些依赖,它们不会依赖于本项目。