@Transactional事务踩坑分享
一般我们在需要事务的时候会用Spring
提供的@Transactional
注解方便的实现一个事务。但是这种写法有很多坑,一定要注意。
标注的方法必须是public
的
在非public
方法上用@Transactional
不会报错,但也不会生效。就跟没写一样…🙄
不要在内部类里调用事务方法
在类内部调用事务方法,@Transactional
不生效。。。
不要捕获异常
Spring的自动事务就是通过捕获异常实现的,千万不要手动捕获,如果要捕获打日志什么的处理完再跑出来!!
不要随意指定异常
方法抛出的异常和rollbackFor
指定的异常不匹配。rollbackFor
不写的话默认RuntimeException
如果不知道方法运行期间会抛出什么错误不填就好了。
不要创建新线程操作
新开线程执行DML,@Transactional
不生效。。。