关于spring事务注解

阅读: 评论:0

关于spring事务注解

关于spring事务注解

我们知道对于spring项目一般都是在service层进行事务注解的。事务注解:“@Transactional”。

不捕获异常情况

当你不用捕获异常时,可以直接在类或方法上添加事务注解,它两的区别在于在类上添加注解会对service中的所有方法进行回滚,而在方法上添加注解,只会在改方法上进行回滚。
@Transactional//看这里
public void demo() {this.userRepository.save(new User(USERNAME));
}

捕获异常情况

当你需要捕获异常时,如果还是只添加了注解“@Transactional”,你只会捕获异常而不会对数据库回滚。解决方法有以下两种:
  • 给注解添加属性rollbackFor=Exception.class,这是因为spring框架只会对抛出RuntimeException或其子类例的实例时才会回滚,其他的异常是不会回滚的
@Transactional(rollbackFor = Exception.class)//看这里
public void demo() throws Exception {this.userRepository.save(new User(USERNAME));throw new Exception("No Rollback");
}
  • 使用 TransactionStatus.setRollbackOnly()手动触发回滚,即在你所需要回滚的方法中添加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@Transactional
public void demo() {this.userRepository.save(new User(USERNAME));TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//看这里
}

本文发布于:2024-02-01 10:51:58,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170675591836105.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:注解   事务   spring
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23