Spring Retry 能够保证与 Spring 的 @Transactional
注解一起使用吗?
具体来说,我想在乐观锁中使用 @Retryable
。这似乎取决于创建的 AOP 代理的顺序。例如,如果调用看起来像这样:
调用代码 -> 重试代理 -> 事务代理 -> 实际数据库代码
那么它将正常工作,但是如果代理结构像这样:
调用代码 -> 事务代理 -> 重试代理 -> 实际数据库代码
然后重试将不起作用,因为关闭事务是引发乐观锁异常的动作。
在测试中,它似乎生成了第一种情况(重试,然后事务),但我无法确定这是否是一种保证的行为,还是仅仅是一种幸运。