解决循环依赖

循环依赖问题在Spring中主要有三种情况:通过构造方法进行依赖注入时产生的循环依赖问题;通过setter方法进行依赖注入且是在多例(原型)模式下产生的循环依赖问题;通过setter方法进行依赖注入且是在单例模式下产生的循环依赖问题。Spring中有相应的解决方案:

构造方法注入产生的循环依赖:在构造方法参数上添加@Lazy注解,添加@Lazy注解之后依赖查找所需要的值是代理对象而不是真实对象。
Setter方法(多例)注入产生的循环依赖:每一次getBean()时,都会产生一个新的Bean,如此反复下去就会有无穷无尽的Bean产生了,最终就会导致OOM问题的出现。在Spring中,只有单例模式的循环依赖问题被解决了,其他两种方式在遇到循环依赖问题时都会产生异常。
Setter方法(单例)注入产生的循环依赖:主要是通过三级缓存来解决的。

请注意,避免循环依赖的关键是合理设计代码结构和类之间的关系,尽量避免不必要的循环依赖。在遇到循环依赖问题时,可以尝试调整代码结构或者采用一些技巧来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值