Spring解决bean之间的循环依赖(循环引用)

2.概述

bean的实例化仅仅是获得了bean的实例,该bean仍在继续创建之中,之后在该bean实例的基础之上,还要做很多额外的操作,例如bean的属性填充、处理器的应用、bean的循环依赖解决等,今天我们就来分析下Spring是如何解决bean之间的循环依赖。

当ClassA引用ClassB,ClassB又引用ClassA,那么两个类之间就会形成一个闭环,导致循环依赖的出现。大家只需记住一点,Spring只能解决单例模式下的Setter循环依赖。

2.1 循环依赖种类

  1. 构造函数的循环依赖。这种依赖显然是解决不了的。在 A 的构造方法中依赖 B,在 B 的构造方法中依赖 A 是不行的。
  2. 非单例Bean的循环依赖。这种依赖也是解决不了的。
  3. 单例Bean的循环依赖。本文介绍的就是如何解决单例Bean的循环依赖的问题。

2.2 Spring怎么解决循环依赖

Spring 在处理属性循环依赖的情况时主要是通过延迟设置来解决的,当bean被实例化后,此时还没有进行依赖注入,当进行依赖注入的时候,发现依赖的bean已经处于创建中了,那么通过可以设置依赖,虽然依赖的be

你可能感兴趣的:(框架-spring,boot,spring,bean,循环依赖,循环引用)