spring 이벤트
스프링 이벤트
스프링에서 ApplicationEvent를 상속받아서 구현된 이벤트를 수신할수 있는 방법이 여러가지 있다.
기본적으로 ApplicationListener를 상속 받아서 구현하는 방법
@Slf4j
@Component
public class TestSpringEventApplicationListener implements ApplicationListener<TestSpringEvent> {
@Override
public void onApplicationEvent(TestSpringEvent event) {
log.debug("Received spring custom event - {}", event);
}
}
두번째로 @EventListener 어너테이션을 사용해서 처리하는 방법
@Slf4j
@Component
public class TestSpringEventListener {
@EventListener
public <T> void handleTestSpringEvent(TestSpringEvent<T> event) {
log.debug("event listener {}", event);
}
}
세번째로 @TransactionalEventListener 어너테이션을 사용하는 방법
@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);
}
}