循环依赖

单例set方法(包括成员变量)循环依赖,spring会利用三级缓存解决,无需额外配置

一级缓存放成品对象

二级缓存放发生了循环依赖时的产品对象(可能是原始bean,可能是代理bean)

三级缓存放工厂对象,发生循环依赖时,会调用工厂方法获取产品

spring期望在初始化阶段创建代理,但如果发生了循环依赖,会由工厂提前创建代理,后续初始化不必重复创建代理

二级缓存意义在于,如果提前创建了代理对象,在最后阶段需要从二级缓存中获取此代理对象,作为最终结果


构造方法和多例循环依赖解决办法

@Lazy

@Scope

ObjectFactory 或者 ObjectProvider

Provider(非spring中的方法)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容