Spring是怎么解决循环依赖问题的

这里是引用

什么是循环依赖?

所谓循环依赖指的是,在类中A对象有B对象作为属性,而B对又使用A对象作为属性,这样在类的创建过程中就发生了A依赖于B,而B又依赖于A,像这种情况就是循环依赖。
有人说这和死锁很像,但是不要把它和死锁混为一谈

    //循环依赖
    class A{
        private B pro;
    }
    
    class B{
        private A pro;
    }

循环依赖

构造器循环依赖

这种就是构造循环依赖,这种问题是无解的,具体原因后面会提到

//循环依赖
class A{
    private B pro;
    public A(B pro){
        this.pro = pro;
    }
}

class B{
    private A pro;
    public B(A pro){
        this.pro=pro;
    }
}

set循环依赖

首先我们先不考虑Spring是怎么解决循环依赖的问题,如果我们在以前写代码中循环依赖怎么解决

    public static void test(){
        A a = new A(); //第一步
        B b = new B(); //第二步
        a.setPro(b);   //第三步
        b.setPro(a);   //第四步
    }
    class A{
    	private B pro;
    	
   		public void setPro(B pro){
        	this.pro=pro;
    	}
	}

	class B{
    	private A pro;
    	
    	public void setPro(A pro){
        this.pro=pro;
    	}
	}

这是不是一个简单的循依赖
先创建对象a实例,再创建对象b实例
a实例中属性b指向b实例 (b对象地址,在栈中对象引用内存地址)
a中的pro属性是不是指向了b @503
在这里插入图片描述
然后a对象是不是已经创建完成了,只不过a对象中的pro属性b还没有完成赋值
只要再给b中pro属性值指向a (a对象内存地址)
在这里插入图片描述
整个循环依赖问题是不是,迎刃而解了

Spring解决循环依赖

Spring三级缓存

为什么Spring要那么大费周章的使用三级缓存?

该内容为本人的初步见解 ,后续内容会逐天更新。

不服来辩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值