spring事务a调用b a没有加事务注解失效了怎么办
时间: 2023-12-19 20:03:56 浏览: 100
Spring @Transactional注解失效解决方案
5星 · 资源好评率100%
在Spring中,如果一个事务方法A调用了另一个非事务方法B,那么B方法就会失去事务性,因为事务的传播性默认是Propagation.REQUIRED,即如果当前没有事务,则创建一个新的事务,如果当前有事务,则加入该事务中。所以,如果方法A没有开启事务,那么方法B就会在没有事务的情况下执行,导致事务失效。
要解决这个问题,可以通过在方法B上添加@Transactional注解来开启事务,或者将方法B提取到一个独立的类中,将该类标记为@Transactional注解,这样方法B就能够在事务中执行了。
另外,也可以通过在方法A中使用AspectJ切面来解决这个问题。具体来说,可以使用AspectJ切面来拦截方法A,并将其中调用方法B的部分提取到一个新的方法中,然后在新的方法上添加@Transactional注解,这样就能够保证方法B在事务中执行了。
阅读全文