spring 项目中抛出 in its raw version as part of a circular reference, but has eventually been wrap 异常问题

项目中存在bean自己引用自己的情况,类似如图所示

最终抛出这个异常

 

百度之后的解决方案在引入的TestService上加@Lazy注解即可搞定。确实也正常了。但是因为之前处理过类似的情况也是自己引用自己,只不过是在方法上加入的是@Transaction 注解,调用初始化也确实没有问题。并未出现如图所示的异常。

最终在AbstractAutowireCapableBeanFactory 中这里发现有点不一样的地方了。

由于后面会对 exposedObject 和bean 做判断,2个对象是否还相同,由于使用@Async注解后这2个对象不再一样

 

如果使用@Async注解,

在此处 会被  getBeanPostProcessors() 中的

AsyncAnnotationBeanPostProcessor 进行处理,生成一个新的代理对象 

 

bean 和 exposedObject 2个对象不再相等,最后走到了 else if 逻辑,最终抛出标题中的异常

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值