spring自己没有解决循环依赖吗
时间: 2023-07-28 07:15:08 浏览: 95
详解Spring循环依赖的解决方案
Spring框架在处理循环依赖时,采用了依赖注入的方式来解决循环依赖。其实现原理是通过提前暴露一个正在创建的bean,以允许另一个bean在创建过程中解决对其的依赖关系。
具体来说,当 Spring 容器发现一个循环依赖时,它会暂时将正在创建的 bean 标记为正在创建中,然后将其添加到一个特殊的“当前创建 bean”缓存中。然后,Spring 容器会尝试解决该 bean 的依赖关系,如果它发现另一个 bean 依赖于正在创建中的 bean,它将从缓存中获取正在创建中的 bean,而不是尝试创建一个新的实例。这样,Spring 就能够在保持单例模式的同时,解决循环依赖的问题。
需要注意的是,Spring 框架只能解决构造函数循环依赖,而对于属性循环依赖,需要使用 @Autowired 注解配合 setter 方法来解决。
阅读全文