Spring 使用注解@Transactional事务

使用注解 @Transactional

//需要导包
import org.springframework.transaction.annotation.Transactional;

@Transactional(rollbackFor = Exception.class)

手动回退事务

//需要导包
import org.springframework.transaction.interceptor.TransactionAspectSupport;

//手动进行事务的回退
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

使用事务时注意事项

@Transactional只能应用到public方法才有效

只有@Transactional注解应用到public方法。因为AOP代理时在TransactionIntectptor在目标方法执行之前,代理对象的invoke或者inteceptor会间接调用AbstractFallbackTransactionAttributeSource中的computeTransactionAttribute。这个方法会判断目标方法是不是public。如果不是public,则不会获取事务的属性配置信息。

避免AOP自调用问题(注意!开发中很容易忽略)

在SpringAop的代理下,只有目标方法由外部调用,目标方法才由Spring生成的代理对象来管理。若同一类当中没有@Transactional注解的方法内部调用@Transactional方法,有@Transactional注解的方法则会被忽略。

© 版权声明
THE END
喜欢就支持一下吧
点赞0打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容