Spring 怎样解决循环依赖?为什么需要三级缓存?
先自己想一想,再看参考要点
参考要点
- 只能解决字段或 Setter 注入的单例:A 实例化后把生成提前引用的工厂放入三级缓存,注入 B 时 B 通过工厂拿到 A 的提前引用(放入二级缓存),A 初始化完成后进入一级缓存
- 需要第三级是因为 A 可能要被 AOP 代理,工厂被调用时才提前创建代理,保证 B 拿到的与容器中最终的对象相同
- 构造器注入和 prototype 的循环依赖无法解决,Spring Boot 2.6 起默认禁止
参考要点
学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。