Spring 为什么不能解决构造器的循环依赖?

如果使用构造器的方式注入依赖对象,并且产生了循环依赖问题。

假设:对象 A 通过构造函数注入了依赖对象 B,同时对象 B 也通过构造函数注入了对象 A。

  1. 此时,如果 Spring 首先使用构造器初始化对象 A,但是在调用构造函数前,发现 A 依赖 B,因此需要去初始化对象 B。

  2. 因为对象 A 还未完成初始化的第一步,因此在第三层缓存中并不存在对象 A 的 ObjectFactory 对象缓存,这会导致对象 B 的初始化无法完成。

  3. 最终,对象 A 和 B 都无法完成创建。

Last updated