@EventListener는 Spring에서 이벤트 기반 프로그래밍을 구현할 수 있도록 제공되는 어노테이션으로 특정 이벤트가 발생하면 자동으로 메서드를 호출한다. 단, Spring Bean으로 등록된 클래스의 메서드에만 사용 가능하다.
Spring 이벤트는 ApplicationEvent
또는 그 하위 클래스 기반으로 동작한다.
@Component
public class EventPublisher {
private final ApplicationEventPublisher publisher;
public EventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
public void publishMessage(String message) {
// Spring 내장 이벤트 발행
publisher.publishEvent(new MessageEvent(this, message));
}
}
Spring에서 이벤트를 발생시키는 대표적인 방법은 ApplicationEventPublisher
를 사용하는 것이다.
publishEvent(Object event)
메서드를 호출하면, Spring 컨테이너가 이벤트를 감지하고 해당 이벤트를 수신하는 @EventListener
를 실행