Why Spring Needs a Three‑Level Cache for Circular Dependencies (Two Levels Lose AOP Proxies)
Spring resolves singleton circular dependencies by using a three‑level cache—singletonObjects, earlySingletonObjects, and singletonFactories—to expose early bean references and generate AOP proxies on demand, avoiding the loss of proxies that occurs with a two‑level cache while preserving performance.
