使用注解 @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
暂无评论内容