Гарантированно ли Spring Retry работает с аннотацией Spring @Transactional
?
В частности, я пытаюсь использовать @Retryable
для оптимистичной блокировки. Похоже, это будет зависеть от порядка создания прокси-серверов AOP. Например, если вызовы выглядят так:
Код вызова -> Прокси-сервер повторной попытки -> Прокси-сервер транзакции -> Фактический код БД
Тогда бы работало корректно, но если бы прокси были устроены так:
Код вызова -> Прокси-сервер транзакции -> Прокси-сервер повторной попытки -> Фактический код БД
Тогда повторная попытка не сработает, потому что акт закрытия транзакции вызывает исключение оптимистической блокировки.
При тестировании он, похоже, сгенерировал первый случай (повторная попытка, затем транзакция), но я не мог сказать, было ли это гарантированным поведением или просто повезло.