循环依赖问题场景和解决方案

Spring循环依赖发生原因:A类注入B类,B类注入A类,导致bean在初始化时,循环注入,导致谁都无法成功注入成功,如下图

循环依赖产生,所以Spring框架采用三级缓存解决掉了循环依赖问题,Spring三级缓存具体怎么解决的不在本章做过多描述。本章着重讲解一下出现循环依赖的场景和解决方案:

场景1:SpringBoot版本在2.6以上,使用@Autowired注解出现循环依赖问题?

解决方法:application.properties配置文件中增加 spring.main.allow-circular-references=true

或者yaml文件增加

因为SpringBoot2.6以上的版本默认是禁用了循环依赖,所以需要我们自己手动开启,一般不推荐这种解决方式,因为在SpringBoot3.0版本出现了@RequiredArgsConstructor注解,可以用它代替大量的@Autowired注解。

场景2:使用 @RequiredArgsConstructor注入bean,配置也增加 spring.main.allow-circular-references=true了,但还是出现了循环依赖问题,项目启动失败?

解决方法:可以采用懒加载注解方式注入bean,如下图

不再初始化进bean,采用懒加载策略,在使用到之后再进行初始化bean,避免循环依赖

ps:使用懒加载注解注入需要去除final修饰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值