spring中是如何解决循环依赖的
时间: 2023-10-29 08:53:42 浏览: 49
在Spring中,解决循环依赖的方法是使用三级缓存。当Spring容器初始化Bean时,会将正在创建的Bean对象放入第一级缓存中。如果发现有循环依赖的情况,Spring会将正在创建的Bean对象提前暴露给其他Bean,但此时Bean对象还未完成初始化。然后,Spring会将正在创建的Bean对象放入第二级缓存中,并继续创建其他Bean。当其他Bean需要依赖该Bean时,Spring会从第二级缓存中获取正在创建的Bean对象,以满足依赖关系。最后,当Bean对象完成初始化后,Spring会将其放入第三级缓存中,并完成整个Bean的创建过程。通过使用三级缓存,Spring能够解决循环依赖的问题,确保Bean对象的正确创建和依赖注入。\[2\]\[3\]
#### 引用[.reference_title]
- *1* [Spring如何解决循环依赖](https://blog.csdn.net/m0_46420244/article/details/126215891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Spring 源码复习 01 IOC](https://blog.csdn.net/kuaipao19950507/article/details/100978308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Spring 如何解决循环依赖的问题](https://blog.csdn.net/qq_36381855/article/details/79752689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]