最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

常识 admin 32浏览 0评论

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 逻辑,最终抛出标题中的异常

 

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 逻辑,最终抛出标题中的异常

 

发布评论

评论列表 (0)

  1. 暂无评论