- 博客(1)
- 收藏
- 关注
原创 声明式事务失效的几种场景
Spring的事务是通过数据库连接来创建,数据库连接底层是放在ThreadLocal,在单线程下,相同数据源的数据库连接是同一个。而多线程场景下,拿到的数据库连接并不一样,会导致获取到不同的事务,没办法进行统一回滚。事务底层使用的是基于 AOP的代理模式,代理模式生成的代理类无法重写被 final、static 修饰的方法,也无法访问private方法。如没有事务声明的方法a,调用了有事务声明的方法b,这时调用方法b的不是代理对象,而是普通对象,这就导致了方法b的事务失效。可以使用编程式事务进行手动处理。
2024-01-17 10:03:35 539 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人