繁体   English   中英

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

[英]Spring - how to gather informations during rollbacks in declarative transaction management

能否请任何人告诉我,是否安全,建议在@Transactional方法内捕获SQL和其他异常? 当使用程序化事务管理时,我可以简单地捕获异常并做我想做的事,但是我不知道我是否通过捕获这些异常来破坏事务性AOP系统,否则将触发回滚...如果我以声明方式进行。

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

您可以使用此代码以编程方式将交易标记为仅回滚

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

请参见Spring Reference中的回滚声明式事务

但是不建议这样做,因为您会将代码紧密耦合到spring框架。


也许,如果您在多个地方执行此操作,则应该引入一个Helper方法,例如TransactionUtils.rollbackCurrentTransaction() 这样,如果您决定更改事务方法(或者天哪,请不要使用spring),则只需更改一种方法。

您所描述的确实是Spring如何知道是否启动事务回滚的方式。 如果您吞下了异常,那么Spring将永远没有机会知道应该回滚该事务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM