依赖循环?三级缓存?

66 阅读1分钟
  1. 循环依赖:

    循环依赖是指两个或多个Bean之间形成了一个循环的依赖关系。这可能发生在构造函数注入或Setter方法注入的情况下。Spring对循环依赖有一定的解决机制,主要通过使用"提前暴露(early exposing)"或"通过代理对象(proxy)"的方式来解决。Spring容器会在创建Bean的过程中识别并处理循环依赖关系。

  2. 三级缓存:

    三级缓存是Spring在处理Bean的创建过程中使用的一种机制。这三个缓存分别是singletonObjects、earlySingletonObjects、singletonFactories。这三级缓存的使用主要是为了解决循环依赖的问题。

    • singletonObjects:缓存已经完全创建好的Bean实例。
    • earlySingletonObjects:缓存已经被提前暴露但是未完成初始化的Bean实例。
    • singletonFactories:缓存用于创建Bean的工厂对象。

Spring使用这三级缓存来确保在循环依赖的情况下,每个Bean都能够正确地完成初始化过程。

总的来说,Spring的循环依赖解决机制和三级缓存机制是为了确保Bean的正确创建和初始化,特别是在涉及到循环依赖的场景下。