我的服务类中有方法。
@Transactional
public void serviceMethod {
dao.daoMethod();
}
public void daoMethod() {//dao.daoMethod
//some code
try {
//some more code that throws an unchecked exception
} catch(Exception exception) {
//do something -- no exceptions generated/thrown from here
}
//some more code
}
这会导致交易回滚吗? 如果从try块中调用的方法中抛出了未经检查的异常,那么它会有什么不同吗?
答案 0 :(得分:2)
不,只有在未捕获的异常情况下才会回滚事务。
事务拦截器“包围”带注释方法的调用;他们无法看到里面发生了什么。
答案 1 :(得分:1)
在你的情况下,它将默默地忽略该异常。你没有在catch块内做任何事情。根本不建议这样做。
答案 2 :(得分:1)
如果你在try-catch块中捕获了一个Exception并且你做了一些操作来处理这个异常 - 就不会发生回滚。在RuntimeException的情况下,默认情况下 - 将发生回滚。
您可以指定哪些异常应该导致回滚。 @Transactional(rollbackFor = MyCheckedException.class)
https://www.catalysts.cc/wissenswertes/spring-transactional-rollback-on-checked-exceptions/