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