// REQUIRED 默认创建一个事务
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class} )
public Object exec(String act, Map<String, Object> params) {
switch (act) {
case "createRecord":
createRecord(params);
break;
}
return null;
}
// SUPPORTS 支持事务
@Transactional(propagation = Propagation.SUPPORTS)
public Result createRecord(Map<String, Object> params){
// 数据持久化操作
return new Result<>();
}
下面小结几种@Transactional注解事务不生效的 case
1、数据库不支持事务
2、注解放在了私有方法上(私有方法上的注解,不生效)
3、类内部调用(非直接调用,不生效)
4、非运行异常,且没有通过 rollbackFor 指定抛出的异常,不生效
5、未捕获异常
6、多线程场景
7、传播属性设置问题
详细请参考博客:https://www.cnblogs.com/yihuihui/p/12262446.html
spring boot 事物的正确使用
最新推荐文章于 2022-09-13 09:05:10 发布