Spring中,在singleton+setting模式下,为什么循环依赖不会出现问题,Spring是如何应对的。

主要的原因是,在这种模式下 Spring 对 Bean 的管理主要分为清晰的两个阶段:

第一个阶段:在 Spring 容器加载的时候,实例化 Bean ,只要其中任意一个 Bean 实例化之后,马上进行"曝光"【不等属性赋值就曝光】
第二个阶段: Bean "曝光"之后,再进行属性的赋值(调用 set 方法。)。

核心解决方案是:实例化对象和对象的属性赋值分为两个阶段来完成的。
 注意:只有scope是singleton的情况下,Bean才会采取提前“曝光”的措施。

你可能感兴趣的:(spring,单例模式,java)