美文网首页JAVA小白笔记
spring循环依赖问题

spring循环依赖问题

作者: 我在公司做牛码 | 来源:发表于2019-11-11 19:44 被阅读0次

1、问题描述
循环依赖的场景举例,如下两个类,就产生了相互依赖,那么初始化的时候,spring是怎样做的呢?
@Component
public class A {

private B b;

public void setB(B b) {
this.b = b;
}
}

@Component
public class B {

private A a;

public void setA(A a) {
this.a = a;
}
}

2、问题解析
有两个要点需要理解
a、spring实例化bean,其实分两步走的,首先创建bean的实例,然后才注入bean的属性
也就是说,虽然属性还没有注入,但此时bean是可以作为一个对象被内存找到的,只是这个对象实际上是个半成品,但该bean的内存地址依然可以作为其他对象的属性被注入

b、spring是通过递归的方式获取目标bean以及其中所依赖的属性bean
比如上面的例子,spring在实例化A的时候,先创建了A的bean,然后再注入属性b的时候,发现B还未被实例化,于是继续调用实例化方法来实例化B;
创建B的bean后,要注入属性a,注意此时是能够获取到a的地址的,即B的实例化可以顺利完成;
最后将新建的B的bean再注入A的bean中,完成循环依赖的初始化。

相关文章

  • 大厂面试系列(四):Spring相关

    Spring相关 spring工作原理简单介绍 循环依赖问题 spring/spring boot启动加载过程 ?...

  • Spring 循环依赖问题fix

    Spring 循环依赖问题fix 拆分的时候,把error都处理完后,准备把工程起起来,发现spring的循环依赖...

  • spring循环依赖问题

    使用spring boot 进行bean内方法循环依赖问题的研究,简单来说就是TestA.test()依赖Test...

  • Spring循环依赖问题

    https://gavinzhang1.gitbooks.io/spring/content/xun_huan_y...

  • Spring循环依赖问题

    循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循...

  • spring循环依赖问题

    1、问题描述循环依赖的场景举例,如下两个类,就产生了相互依赖,那么初始化的时候,spring是怎样做的呢?@Com...

  • Spring循环依赖问题

    什么是循环依赖 循环依赖就是两个对象之间存在相互依赖的关系; Spring是如何解决循环依赖的 Spring使用三...

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

    Spring 是如何解决循环依赖的? 循环依赖: Spring 循环依赖有三种情况: 构造器的循环依赖,这种依赖 ...

  • Spring-IOC-循环依赖检测与Bean的创建

    Spring容器的循环依赖检测 Spring容器循环依赖包括:构造器循环依赖和setter循环依赖。 1- 构造器...

  • Spring核心之bean生命周期和三级缓存

    在使用spring框架的日常开发中,bean之间的循环依赖太频繁了,spring已经帮我们去解决循环依赖问题,对我...

网友评论

    本文标题:spring循环依赖问题

    本文链接:https://www.haomeiwen.com/subject/qrntictx.html