在spring的bean缓存中既然有了dependentBeanMap为什么还会有containedBeanMap?

来源:6-9 BeanDefinition的注册

Tristeza

2020-08-31

最近在读注册的源码时这里有一点疑惑,我所理解的是dependentBeanMap保存了一个bean所依赖的所有bean,containedBeanMap保存了它所包含的所有bean。我感觉这两个的map是重复的?因为感觉依赖的所有bean相当于包含的所有bean,或者说能不能详细讲一下依赖和包含这两个词在bean关系里的区别?感觉有点区分不开

写回答

1回答

翔仔

2020-09-01

同学好,两个的作用是不同的,大致看了下代码,比如A类里有Bean B, Bean B里有Bean C

containedBeanMap

里只保存了A->B的关系

而dependentBeanMap则保存了

A->B->C的关系

两者的作用主要是前者用来确保A下面的Bean都销毁,而后者则是确保依赖的关系

0
2
翔仔
contained也存ref,但是depend这块除了显示dependson 还有隐式依赖,即属性里面有bean的情况,主要关注于依赖,cobtained则只是存储该bean里面包含的bean,不包含属性bean里面包含的bean。
2020-09-01
共2条回复

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1498 学习 · 495 问题

查看课程