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

Posted zy691357966

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[跟我学spring学习笔记][DI循环依赖]相关的知识,希望对你有一定的参考价值。

循环依赖

什么是循环依赖?

循环依赖就是循环引用,就是两个或多个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

以上是关于[跟我学spring学习笔记][DI循环依赖]的主要内容,如果未能解决你的问题,请参考以下文章

Spring-IOC学习笔记-03DI依赖注入

Spring学习笔记4:依赖注入 DI

Web框架—Spring Framework学习笔记(IoC DI Bean)

Spring学习系列笔记之Spring心得

spring in action学习笔记一:DI(Dependency Injection)依赖注入之CI(Constructor Injection)构造器注入

Spring学习笔记