TransactionSynchronizationManager и обнаружение отката транзакции - PullRequest
0 голосов
/ 24 апреля 2020

Я добавляю некоторый код, который выполняется в методах beforeCommit () и beforeCompletion () TransactionSycnhoniztion в Spring. Я должен быть в состоянии обнаружить, что транзакция активна и помечена для отката перед выполнением моего кода.

public void beforeCompletion() {
    if (transaction inactive and not rolledback)
        doit();
}

Как определить, активна ли транзакция и не выполнена ли откат? Я вижу метод isActualTransactionActive (), но не вижу способа получить доступ к транзакции или определить, был ли выполнен откат. (если эти методы не вызываются при откате транзакции)

1 Ответ

0 голосов
/ 24 апреля 2020

Я просматривал исходный код Spring, и AbstractPlatformTransactionManager имеет методы для processCommit () и processRollback () .....

processCommit () вызывает triggerBeforeCommit (), а processRollback - нет.

Таким образом, ответ перед beforeCommit () не вызывается, когда происходит откат ....

и beforeCompletion вызывается в обоих случаях, но передает статус в аргументе метода.

...