请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

1回答

翔仔 2020-09-01 00:10:37

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

containedBeanMap

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

而dependentBeanMap则保存了

A->B->C的关系

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

0 回复 有任何疑惑可以回复我~
  • 提问者 Tristeza #1
    这两个map的value对应的都是一个set,为什么containedBeanMap只存了A->B的呢?通过今天的了解,我感觉是不是contrainesBeanMap存的是ref属性对应的集合,dependentBeanMap存的是depends-on属性对应的集合
    回复 有任何疑惑可以回复我~ 2020-09-01 00:19:50
  • 翔仔 #2
    contained也存ref,但是depend这块除了显示dependson 还有隐式依赖,即属性里面有bean的情况,主要关注于依赖,cobtained则只是存储该bean里面包含的bean,不包含属性bean里面包含的bean。
    回复 有任何疑惑可以回复我~ 2020-09-01 00:46:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信