spring中通过依赖注入的方法来解决类的相互依赖问题!!!

spring中通过依赖注入的方法来解决类的相互依赖问题!!!

spring中通过依赖注入的方法来解决类的相互依赖问题!!!

只要不是构造函数注入就不会产生循环引用的问题。

这是因为:

spring 容器对构造函数配置Bean 进行实例化的时候,有一个前提,即 Bean 构造函数入参引用的对象必须已经准备就绪。

由于这个机制,如果两个Bean 都循环引用,都采用构造函数注入的方式,就会发生类似于线程死锁的循环依赖问题。

代码示例:

public class TestA {

private TestB b;

public TestA(){

b = new TestB();

System.out.println("init A");

}

}

public class TestB {

private TestA a;

public TestB(){

a = new TestA();

System.out.println("testB init");

}

public static void main(String[] args) {

TestA testA = new TestA();

}

}

运行后日志:

Exception in thread "main

java解决循环引用_Java 中如何避免循环引用,解决相互依赖的问题相关推荐

  1. java for循环迭代_JAVA中的for-each循环与迭代

    在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...

  2. java中for循环嵌套_Java中的for循环嵌套

    摘要 Java嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构.whiledo.while.for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for ...

  3. java do while 循环语句_java中do...while循环语句使用方法详解

    do..while循环语句也称为后测试循环语句,它的循环重复执行方式,也是利用一个条件来控制是否要继续重复执行这个语句.与while循环所不同的是,它先执行一次循环语句,然后再去判断 - do...w ...

  4. java 基本类型 引用类型_Java中的基本类型和引用类型变量的区别

    基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: 是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组 ...

  5. java for嵌套for循环语句_java中的for循环嵌套语句怎么执行?

    展开全部 控制语句--for:语句的嵌套应用:累加求和,计数器:循环嵌套. 一.语62616964757a686964616fe58685e5aeb931333365646232句的嵌套应用 语句嵌套 ...

  6. java ref 应用类型_Java中的四种引用类型比较

    1.引用的概念 引用这个概念是与JAVA虚拟机的垃圾回收有关的,不同的引用类型对应不同的垃圾回收策略或时机. 垃圾收集可能是大家感到难于理解的较难的概念之一,因为它并不能总是毫无遗漏地解决Java运行 ...

  7. python中for无限循环_循环-在Python中从1循环到无穷大

    循环-在Python中从1循环到无穷大 在C语言中,我会这样做: int i; for (i = 0;; i++) if (thereIsAReasonToBreak(i)) break; 如何在Py ...

  8. java中无限循环的方法_Java中的无限循环

    Java中的无限循环 在Java中查看下面的无限while循环. 它会导致它下面的语句编译时错误. while(true) { System.out.println("inside whil ...

  9. java for循环返回值_Java中的for循环——通过示例学习Java编程(9)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=21 循环用于反复执行同一组语句,直到满足特定条件为止 ...

最新文章

  1. PVLAN技术应用,网络管理员的新宠
  2. 学习PetShop3.0(2)宠物展示
  3. 头插法和尾插法创建链表(有无头结点)
  4. 页面嵌入Windows Media Player需要注意的
  5. python大数据和java大数据的区别-做大数据工程师,语言选Java还是Python?
  6. access更新查询非汉族加分_计算机二级Access:如何创建更新查询
  7. spyder python下载_spyder下载
  8. ADXL361(微功耗三轴加速度计)使用笔记
  9. 国家法定节假日调整已形成方案
  10. 金融学习之十一——久期
  11. FFmpeg学习(音视频理论知识)
  12. android新闻客户端答辩,头条客户端 Android
  13. 吐血整理!程序员常见的几种变现方式!
  14. 嵌入式软件工程师面试题及答案
  15. SiteRAS一款外贸网站SEO分析工具,给您的网站做个深度体检
  16. cps配置之唯品会联盟篇
  17. Traingview MACD自定义指标颜色修改
  18. 一维数组、二维数组、三维数组、四维数组、多维数组的理解
  19. noi2018 游记 以及 oi生涯回忆录
  20. 栅格化系统的原理以及实现

热门文章

  1. 解决windows10下无法安装.net framework 3.5,错误代码0x800F081F
  2. Java经典排序算法的含义解析
  3. 城市疫情数据统计C语言课程设计
  4. vivoY73s和vivoS7哪个好?
  5. verilog synthesis
  6. dnf压爆服务器挑战网站,DNF手游压爆服务器挑战官方版
  7. 用lua解决八皇后问题
  8. SQL Server 根据视图名称批量删除视图
  9. 【PC技巧】睡眠唤醒时如何设置不显示登录界面
  10. AE468 卡通特效彩色涂鸦手绘元素文字标题动画视频字幕素材工程ae模板