gpt4 book ai didi

java - 事务性 Spring 重试

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:22:09 24 4
gpt4 key购买 nike

Spring Retry 是否保证与 Spring 的 @Transactional 注解一起工作?

具体来说,我正在尝试使用 @Retryable 进行乐观锁定。它似乎取决于所创建的 AOP 代理的顺序。例如,如果调用如下所示:

调用代码 -> 重试代理 -> 事务代理 -> 实际数据库代码

然后它会正常工作,但如果代理的结构如下:

调用代码 -> 事务代理 -> 重试代理 -> 实际数据库代码

然后重试将不起作用,因为关闭事务的行为会引发乐观锁定异常。

在测试中,它似乎生成了第一种情况(重试,然后是事务),但我无法判断这是一个有保证的行为还是只是幸运。

最佳答案

在这里找到答案: https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html#tx-decl-explained表 2 表明 Transactional 注释的建议具有 Ordered.LOWEST_PRECEDENCE 的顺序,这意味着将 RetryableTransactional 只要您不覆盖这些注释中的任何一个的建议顺序。换句话说,您可以安全地使用这种形式:

@Retryable(StaleStateException.class)
@Transactional
public void performDatabaseActions() {
//Database updates here that may cause an optimistic locking failure
//when the transaction closes
}

关于java - 事务性 Spring 重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49678581/

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