gpt4 book ai didi

java - Spring事务注解-获取 Activity 事务

转载 作者:行者123 更新时间:2023-12-01 15:15:20 25 4
gpt4 key购买 nike

在我的 Spring 应用程序中,我将服务层方法标记为 @Transactional(propagation=Propagation.REQUIRED)正在使用 <tx:annotation-driven /> 。通常,方法完成时自动提交事务的默认行为就像一个魅力。但在特定情况下,我需要在方法结束前不久提交 - 是的,即使该点之后的部分抛出异常。

在这样的方法中是否有办法访问当前事务?我试过这个:

TransactionDefinition td = new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_MANDATORY); // make sure we're talking about the same transaction already provided by the annotation
TransactionStatus status = transactionManager.getTransaction(td);

// perform various JDBC operations

transactionManager.commit(status);
methodThatNeedsToBeCalledAfterCommit();

但是查看我的日志,我只看到“AbstractPlatformTransactionManager.processCommit(752) | Initiating transaction commit”发生一次,并且从时间戳来看,这似乎是在 methodThatNeedsToBeCalledAfterCommit() 之后。 ,这将是 @Transactional 的正常行为方法。

有没有办法在这样的方法中实际强制提交?

最佳答案

我不这么认为。此外,Spring 会尝试在你的方法结束时重新提交。所以 2 次提交:不好。

您应该重新考虑方法的组织。也许将现有的方法分为两种方法:一种使用 @Trnasactional,另一种使用剩余的行。

关于java - Spring事务注解-获取 Activity 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11690842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com