spring声明式注解@Transactional的rollbackFor属性的用法和注意事项

众所周知spring提供了声明式注解@Transactional,可以很方便的为我们项目提供事务管理,只要我们在类或者是方法上添加@Transactional注解即可,如下图所示:

这样我们的方法就都会被事务所管理咯,如果方法中遇到了异常也能够自动回滚,对于这些相信大家也都不陌生了吧.

但是在这里是有一个误区的,很多人都认为加上@Transactional注解就可以回滚所有的错误了,其实并不然.

在spring项目中,@Transactional注解默认会回滚运行时异常及其子类.,异常继承体系如下图

从图中可以看出RuntimeException是Exception异常的子类,那我们如果发生了Exception异常怎么办,答案是发生了Exception异常spring就不会帮你回滚咯

解决办法

@Transactional(rollbackFor = Exception.class)

在@Transactional注解中加上rollbackFor属性,表示回滚的异常类型,设置Exception异常就回滚,这样不管是Exception还是RuntimeException,spring都能帮助我们去回滚数据了.   所以以后再类注解上加上@Transactional(rollbackFor = Exception.class)即可.

发布了60 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42214548/article/details/102916519