spring - @Transactional(rollbackFor = Exception.class) 和 @Transactional(propagation=Propagation.REQUIRED) 有什么区别
问题描述
@Transactional(rollbackFor = Exception.class)
public void foo1() {
`/**Some Code**/`
}
@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
`/**Some Code**/`
}
解决方案
@Transactional(propagation=Propagation.REQUIRED)
并且@Transactional(rollbackFor = Exception.class)
大致相同。和propagation=Propagation.REQUIRED
默认一样。所以考虑到这一点,它们等同于@Transactional(propagation=Propagation.REQUIRED)
and @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class)
。
唯一的区别是,如果没有s,rollbackFor = Exception.class
它将仅回滚RuntimeException
s 和Error
s 而不会回滚其他发生的异常。(使用 EJB 时 JEE 也是如此,并且行为也已转换为 Spring)。
推荐阅读
- spring-boot - Spring Boot、Thymeleaf 和字符串
- python - Paramiko“TypeError:'NoneType'对象不可调用”在服务器上执行命令的脚本末尾
- flutter - 如何在没有状态的情况下使用 Navigator 2.0 导航?
- math - 如何计算数字的相似度(在列表中)
- dependencies - yum 包含对 vscode 1.56.1 的依赖,已删除
- macos - Rsync将目录从远程复制到本地空间不起作用
- android - 将 Android Studio 更新到 4.2 后编译错误
- react-native - 部署密钥是空的 appcenter 代码推送 cli
- c++ - 有没有一种有效的方法来生成 N 小于 X 的因子数?
- r - 我可以在 R 中提取 pdf 的结构来检查作者、日期等信息并将其存储在例如数据框中吗?