spring框架学习(11)Spring 如何解决循环依赖?

序言

什么是循环依赖?

 

Spring 如何解决循环依赖问题

先上个通俗的答案解释,三级缓存

 /**
   * 单例对象的缓存:bean 名称——bean 实例,即:所谓的单例池。
   * 表示已经经历了完整生命周期的 Bean 对象
   * <b>第一级缓存</b>
   */
  Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);
​
  /**
   * 早期的单例对象的高速缓存:bean 名称——bean 实例。
   * 表示 Bean 的生命周期还没走完(Bean 的属性还未填充)就把这个 Bean 存入该缓存中
   * 也就是实例化但未初始化的 bean 放入该缓存里
   * <b>第二级缓存</b>
   */
  Map<String, Object> earlySingletonObjects = new HashMap<>(16);
​
  /**
   * 单例工厂的高速缓存:bean 名称——ObjectFactory。
   * 表示存放生成 bean 的工厂
   * <b>第三级缓存</b>
   */
  Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);

 

资料

Spring 是如何解决循环依赖的?

posted @ 2021-03-28 13:21  ~沐风  阅读(61)  评论(0编辑  收藏  举报