Выполнение определенной логики по окончанию текущей транзакции в Spring Framework можно "подключать" динамически с помощью так называемых транзакционных синхронизаций.
Транзакционная синхронизация - это по сути callback-объект типа org.springframework.transaction.support.TransactionSynchronization
, который содержит в себе определенные методы вызываемые из AbstractPlatformTransactionManager на соответствующие действия над транзакцией (afterCompletion, afterCommit, afterRollback, suspend и т.д.). org.springframework.transaction.support.TransactionSynchronizationManager
- менеджер со статическими методами, используемый для регистрации и управления синхронизациями. При написании своей синхронизации в качестве базового класса удобно использовать org.springframework.transaction.support.TransactionSynchronizationAdapter
. Вот пример:
2 комментария:
Допустим есть несколько транзакционных методов, и внутри каждого из них есть подобный код. Как он будет себя вести при откате/завршении транзакции? Будут вызываться в обратном порядке?
Нет, Александр. Вызовы будут осуществляться в порядке добавления синхронизаций.
Отправить комментарий