在controller层catch异常会影响内部回滚吗
时间: 2024-04-04 21:30:04 浏览: 146
SpringBoot事务使用及回滚实现代码详解
5星 · 资源好评率100%
在controller层catch异常不会影响内部的事务回滚,因为事务是基于线程的,每个线程都有自己的事务上下文。如果在controller层捕获了异常,事务上下文仍然存在于该线程中,并且仍然会在该线程中回滚。事实上,Spring的声明式事务管理默认会在发生未被捕获的异常时回滚事务。因此,如果你在controller层捕获了异常并处理了它,事务仍然会回滚,因为事务管理器会在异常被抛出时自动回滚事务。
但需要注意的是,在捕获异常后,如果你想要回滚事务,你需要手动调用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()方法来将事务标记为回滚状态。否则,事务将会提交。
阅读全文