문서의 이전 판입니다!
@EventListener
가 아니라 @TransactionalEventListener
를 사용해야 한다. @EventListener
는 트랜잭션 범위 내에서 동기적으로 실행되고, @TransactionalEventListener
는 커밋 전/후 등을 자유롭게 지정할 수 있다.ApplicationEventPublisher
를 사용해서 아무 이벤트 객체나 이벤트로 발행@TransactionalEventListner
애노테이션이 걸린 메소그의 인자로 해당 이벤트 객체를 받아서 처리.@TransactionalEventListner
의 설정에 따라서 이벤트 핸들러 호출이 커밋 전,후 등에 됨을 보장받을 수 있음.