Spring源码之 Bean 的循环依赖
循环依赖是 Spring 中经典问题之一,那么到底什么是循环依赖?简单说就是对象之间相互引用, 如下图所示:
代码层面上很好理解,在 bean 创建过程中 class A 和 class B 又经历了怎样的过程呢?
可以看出形成了一个闭环,如果想解决这个问题,那么在属性填充时要保证不二次创建 A对象 的步骤,也就是必须保证从容器中能够直接获取到 B。
一、复现循环依赖问题
Spring 中默认允许循环依赖的存在,但在 Spring Boot 2.6.x 版本开始默认禁用了循环依赖
1. 基于xml复现循环依赖
定义实体 Bean
java复制代码public class A {