两个 singleton Bean A 与 B 互相通过构造器注入对方,容器启动时的结果是?

Spring / Java Web

  1. A.容器先实例化 A 并把半成品放入三级缓存暴露早期引用,完成 B 的创建后再回填 A,正常启动
  2. B.抛出 BeanCurrentlyInCreationException,构造器循环依赖无法完成
  3. C.容器自动为其中一方生成延迟解析的代理对象注入,先完成实例化再在首次使用时解析,启动不受影响
  4. D.两者被容器合并成同一个 Bean 实例以打破循环,启动正常