战斧 2023-08-29 13:53 采纳率: 0%
浏览 23

奇特的Transactional失效场景

有两个类A B,各自都有被@Transactional注解的方法,且这两个类互相引用了,最终导致A类里面持有的不是B的代理,而是B本身。当时处理的时候在A里面把B的引用设置为@Lazy解决掉了。

public Class ClassA {

  @Autowired
  @Lazy
  private ClassB classB
  ......


}

可后面就再也复现不了了,即使把@Lazy去掉了也没问题。这问题发生已经两年了,每每思索都没相通
因为Spring里面循环引用是可以处理的,什么情况才会导致注入的不是代理对象而是ClassB本身呢?我当时想的是可能ClassB被什么东西引用了,导致它的实例化大幅提前,甚至比BeanPostProcessor更早,这样切面就切不到它了,没办法为他创建代理,它的Beanj就是它自身。可后面检查了,并没有这种情况。真是奇了怪了

  • 写回答

1条回答 默认 最新

  • 兴奋的大母鸡 2023-08-29 14:09
    关注

    我也遇到过,代码运行的好好的,半年多了,也没人改,突然就循环依赖了,然后怎么重启都不行,加上@lazy注解以后问题消失,百思不得其解

    评论

报告相同问题?

问题事件

  • 创建了问题 8月29日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真