스프링 이벤트
스프링에서 ApplicationEvent를 상속받아서 구현된 이벤트를 수신할수 있는 방법이 여러가지 있다.
기본적으로 ApplicationListener를 상속 받아서 구현하는 방법
1 2 3 4 5 6 7 8 9 10
| @Slf4j @Component public class TestSpringEventApplicationListener implements ApplicationListener<TestSpringEvent> { @Override public void onApplicationEvent(TestSpringEvent event) { log.debug("Received spring custom event - {}", event); } }
|
두번째로 @EventListener 어너테이션을 사용해서 처리하는 방법
1 2 3 4 5 6 7 8 9 10 11 12
| @Slf4j @Component public class TestSpringEventListener {
@EventListener public <T> void handleTestSpringEvent(TestSpringEvent<T> event) { log.debug("event listener {}", event); }
}
|
세번째로 @TransactionalEventListener 어너테이션을 사용하는 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| @Slf4j @Component public class TestSpringTransactionalEventListener {
@TransactionalEventListener public <T> void handleAfterCommit(TestSpringEvent<T> event) { log.debug("AFTER COMMIT {}", event); }
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMPLETION) public <T> void handleAfterCompletion(TestSpringEvent<T> event) { log.debug("AFTER COMPLETION {}", event); }
@TransactionalEventListener(phase = TransactionPhase.AFTER_ROLLBACK) public <T> void handleAfterRollback(TestSpringEvent<T> event) { log.debug("AFTER ROLLBACK {}", event); }
@TransactionalEventListener(phase = TransactionPhase.BEFORE_COMMIT) public <T> void handleBeforeCommit(TestSpringEvent<T> event) { log.debug("BEFORE COMMIT {}", event); }
}
|
참조