вторник, 6 апреля 2010 г.

Транзакционные синхронизации в Spring Framework

Выполнение определенной логики по окончанию текущей транзакции в Spring Framework можно "подключать" динамически с помощью так называемых транзакционных синхронизаций.

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

2 комментария:

Alexander Petrov комментирует...

Допустим есть несколько транзакционных методов, и внутри каждого из них есть подобный код. Как он будет себя вести при откате/завршении транзакции? Будут вызываться в обратном порядке?

Никита Кокшаров комментирует...

Нет, Александр. Вызовы будут осуществляться в порядке добавления синхронизаций.