首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring -如何在声明性事务管理中的回滚期间收集信息

Spring -如何在声明性事务管理中的回滚期间收集信息
EN

Stack Overflow用户
提问于 2010-09-27 03:24:34
回答 2查看 728关注 0票数 2

请任何人告诉我,在@Transactional方法中捕获SQL和其他异常是安全的还是推荐的?当使用编程式事务管理时,我可以简单地捕获异常并做任何我想做的事情,但我不知道是否通过捕获这些否则会触发回滚的异常来破坏事务性AOP系统……如果我以声明的方式来做。

我假设有一些代理,它们为AOP建议中的@ transaction方法创建了一个具有独立连接的逻辑事务。并且他们需要捕获“我想捕获”的异常,并回滚事务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-27 21:28:11

可以使用以下代码以编程方式将事务标记为仅回滚

代码语言:javascript
复制
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

请参见Spring Reference中的Rolling back a declarative transaction

但不推荐这样做,因为您将代码与spring框架紧密耦合在一起。

也许,如果你在多个地方这样做,你应该引入一个帮助器方法,比如TransactionUtils.rollbackCurrentTransaction()。这样,如果你决定改变你的事务性方法(或者天不允许,远离spring),你只需要改变一种方法。

票数 1
EN

Stack Overflow用户

发布于 2010-09-27 05:16:14

您所描述的实际上是Spring如何知道是否启动事务回滚。如果你接受了异常,那么Spring永远没有机会知道它应该回滚事务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3799421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档