22년 12월 작성한 글입니다.
@Transactional
어노테이션을 통해 트랜잭션을 처리합니다.@TransactionalEventListener
를 사용합니다.@TransactionalEventListener
이 적용된 메서드는 TransactionalEventListenerFactory
를 통해 TransactionalApplicationListener
로 등록됩니다.TransactionalApplicationListener
는 onApplicationEvent
를 통해 호출됩니다.TransactionalApplicationListenerSynchronization
를 TransactionSynchronizationManager
에 등록합니다.AbstractPlatformTranscationManager
의 commit, rollback 과정에서 TransactionSynchorinization
이 실행되는것으로 작성하였습니다.TransactionalApplicationListenerSynchronization
도 TransactionSynchorinization
를 구현하였기에 commit, rollback 과정에서 호출됩니다.TransactionalApplicationListener#onApplicationEvent
가 호출되었을때, TransactionalApplicationListenerSynchronization
가 TransactionSynchronizationManager
에 등록됩니다.TransactionalApplicationListener$SynchronizationCallback
가 호출되고 아래와 같은 페이즈에 호출되도록 등록이 가능합니다.TransactionSynchronization
를 TransactionSynchronizationManager
에 등록하거나@TransactionalEventListener
(TransactionalApplicationListener
) 를 사용할수 있습니다.