文章目录
Spring 典型,非典型循环依赖问题及其解决方法
1、设计原则
在设计时,我们应该尽量避免出现循环依赖的情况,应该把循环依赖的公共部分进行分层,抽取公共部分,然后依赖公共部分
2、典型循环依赖
但是由于某些业务之间的相互调用太多,总会有一些漏网之鱼出现了循环依赖,但是当你使用 @Autowired
进行依赖注入时,程序是可以正常运行的。 当使用构造函数进行依赖注入时,则是不可以正常运行的,因为无法创建bean
3、到底什么是依赖
依赖,说的简单点,就是A 要用到B 的方法去执行逻辑,但是A 在何时需要用到B ,决定了这种依赖关系是强依赖还是弱依赖
4、强依赖
就是A 的产出就必须要有
B的参与,没有B ,A就没法被生产出来,打个比方,就是没你不行
构造函数注入是强依赖,Spirng 没法把对象new 出来,所以基于构造函数的循环依赖会导致无法创建bean
5、弱依赖
就是A 的产