您的位置:首页 > 编程语言 > Java开发

[跟我学spring学习笔记][DI循环依赖]

2016-04-13 23:59 621 查看

循环依赖

什么是循环依赖?

循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方.

Spring容器循环依赖包括构造器循环依赖和setter循环依赖,那Spring容器如何解决循环依赖呢?

先定义循环类

CircleA->CircleB->CircleC->CircleA

Spring 如何解决循环依赖

一.构造器循环依赖

表示通过构造器注入构成的循环依赖,此依赖是无法解决的,只能抛出
BeanCurrentlyInCreationException
异常表示循环依赖。

第一次接受的异常是
BeanCreationException


需要三次getCause才是
BeanCurrentlyInCreationException


以下是测试代码,可以好好看看怎么写测试

public class HelloTest {
@Test(expected = BeanCurrentlyInCreationException.class)
public void testCircleByConstructor() throws Throwable {
try {
new ClassPathXmlApplicationContext("chapter2/instantiatingBean.xml");
}
catch (Exception e) {
//因为要在创建circle3时抛出;
Throwable e1 = e.getCause().getCause().getCause();
throw e1;
}
}
}


二、setter循环依赖

后面的没必要看了…

别出循环依赖局OK
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: