在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。 在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚...
// 模拟异常 throw new RuntimeException("发生错误,事务将回滚"); // 数据库操作2(如果上面的异常抛出,这里将不会被执行) // ... } } 在这个例子中,transactionalMethod 方法被 @Transactional(rollbackFor = Exception.class) 注解标记。当该方法执行时,如果抛出了 RuntimeException,事务将会回滚,确保数据...
a transaction will be rolling back on {@link RuntimeException} and {@link Error} but not on checked exceptions (business exceptions).//翻译:指定事物回滚的异常类型,默认仅对于运行期异常和错误支持事务回滚,对于检查异常(业务异常是不支持的)Class<?extends...
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class) 2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class) 3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED) 注意: 如果异常被try{}catch{}了,事务就不回滚了,如...
17、@Transactional(rollbackFor = Exception.class) 详解1、参考来源:https://www.cnblogs.com/clwydjgs/p/9317849.html 1)、异常是分为运行时异常和非运行时异常,error时候,事务是一定会回滚的如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。 如果不想终止,则必须捕获所有...
至于加上@Transactional中指定rollbackFor=Exception.class以后是如何起作用的接着往下看. spring中事务回滚的大概逻辑是,发生异常之后,会根据配置的事务属性判断是否进行回滚的处理,如果不进行事务回滚则直接进行事务提交.这里重要的体现是在:TransactionAspectSupport.java中completeTransactionAfterThrowing // 发生异常时事务...
简介:@Transactional(rollbackFor=Exception.class)的使用 一、引言 引言:最近在优化项目的代码,然后使用的是阿里的P3C代码规范检查,然后就出现了如下的提示。 方法【create】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback。 二、原因 原因:并未在方法内或者注解上说明发生异常时如何回滚。下图是方法...
这里如果是增删改的时候我建议大家都使用@Transactional(rollbackFor = Exception.class) 补充一下@Transactional(rollbackFor = Exception.class)一些失效的场景: 1、不是用public修饰; 2、try catch捕获了异常(没有在catch里面手动抛出异常); 3、没有加@Service(也就是没有被 Spring 管理)。
@Transactional只能回滚RuntimeException和RuntimeException下面的子类抛出的异常 不能回滚Exception异常 如果需要支持回滚Exception异常请用@Transactional(rollbackFor = Exception.class) 这里如果是增删改的时候我建议大家都使用@Transactional(rollbackFor = Exception.class) ...
总结一下:@Transactional只能回滚RuntimeException和RuntimeException下面的子类抛出的异常,不能回滚Exception异常。 如果需要支持回滚Exception异常请用@Transactional(rollbackFor = Exception.class)。 这里如果是增删改的时候我建议大家都使用@Transactional(rollbackFor = Exception.class)。