Spring框架如何解决循环依赖

一、什么是循环依赖

        循环依赖指的是两个类中的属性各自依赖对方,比如A依赖B,B依赖A,A类中有B属性,B类中有A属性

        spring在实例化其中一个类A的时候,填充属性的时候要去实例化另一个类B,而填充另外一个类B属性A的时候又发现需要原来的那个类A,导致循环引用,无限创建

演示:

创建两个相互依赖的类A.B:

配置类:

测试类:

 结果:

 

二、解决循环依赖

        1、最好的办法是重新写代码然后抽取公共的部分共同依赖,

        2、将两个service进行松耦合,这种方式,我们可以将公开的方法抽成接口,而方法的实现类里面注入接口就可以,这样就不会发生循环依赖;就是在A实现类里面@Autowired B的接口,B实现类里面@Autowired A的接口,这样就不会循环依赖

        3、在你注入bean的时候,在互相依赖的两个bean上加上@Lazy注解;



@Autowired
@Lazy
private A a;




@Autowired
@Lazy
private B b;

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值