- 0
- 0
- 约1.22千字
- 约 1页
- 2026-08-14 发布于北京
- 举报
Spring是如何解决循环依赖的问题的?
缓存,提前对象,aop
总:什么是循环依赖问题,A依赖B,B依赖C,C依赖A
分:先说明bean得创建过程:实例化,初始化(填充属性)
1.先创建A对象,实例化A对象,此时A对象中的b属性为空
2.从容器中查找B对象,如果找到了,直接赋值不存在循环依赖问题(不通),找不到直接创建B对象
3.实例化B对象,此时B对象中的a属性为空,填充属性a
4.从容器中查找A对象,找不到,直接创建
此时,如果仔细琢磨的话,会发现A对象,是存在的,只不过此时的A对象不是一个完整的状态,只
完成了实例化但是未完成初始化,如果在程序调用过程中,拥有了某个对象的,能否在后期给他完
成赋值操作,可以优先把非完整状态的对象优先赋值,等待后续操作来完成赋值,相当于提前了某
个对象的,所以解决问题的在于实例化和初始化分开操作,这也是解决循环依赖问题的
关键,
当所有的对象都完成实例化和初始化操作,还要把完整对象放到容器中,此时在容器中存在对象
的几种状态,完成实例化=但未完成初始化,完整
原创力文档

文档评论(0)