开发喵星球

Spring中为什么需要上面的二级Map ?

在Spring框架中,涉及到循环依赖时,为了解决循环依赖问题,使用了三级缓存,其中包括上面提到的二级Map。

具体来说,三级缓存分别是:

  1. singletonObjects:

    • 保存已经完全初始化的单例Bean实例。
  2. earlySingletonObjects:

    • 保存尚未完全初始化的单例Bean实例,用于检测循环依赖。
  3. singletonFactories:

    • 保存用于创建单例Bean的ObjectFactory,当检测到循环依赖时,可以通过这个ObjectFactory创建Bean。

现在来解释一下为什么需要这个二级Map(earlySingletonObjects):

这个二级Map(earlySingletonObjects)的作用就是用于保存尚未完全初始化的Bean实例,在发生循环依赖的情况下,通过singletonFactories中保存的ObjectFactory来创建Bean实例。这样,即使Bean在创建过程中发现了循环依赖,也能够提前暴露尚未完全初始化的Bean实例,从而避免循环依赖导致的问题。

Proudly powered by WordPress