더북(TheBook)

4.8.4 애플리케이션 이벤트

BeanFactory에는 없는 ApplicationContext만의 특징은 ApplicationContext가 중개자로서 이벤트를 발행하고 수신할 수 있다는 것입니다. 4.8.4절에서는 이벤트 사용법을 살펴봅니다.

 

4.8.4.1 애플리케이션 이벤트 사용하기

이벤트는 java.util.EventObject를 상속한 ApplicationEvent에서 파생된 클래스입니다. 모든 빈은 ApplicationListener<T> 인터페이스를 구현해 이벤트를 받을 수 있습니다. ApplicationContext가 구성될 때 ApplicationListener<T> 인터페이스를 구현한 빈을 자동으로 리스너로 등록하기 때문입니다. 이벤트는 ApplicationEventPublisher.publishEvent() 메서드로 발행하며 ApplicationContextApplicationEventPublisher 인터페이스를 상속하므로 이벤트를 발행하는 클래스는 반드시 ApplicationContext에 접근할 수 있어야 합니다. 웹 애플리케이션에서는 간단히 ApplicationContext에 접근할 수 있습니다. 웹 애플리케이션에서는 많은 클래스가 스프링 프레임워크 클래스에서 파생되므로 스프링 프레임워크 클래스가 가지고 있는 protected 메서드를 호출하여 ApplicationContext에 접근할 수 있기 때문입니다. 이에 비해 독립형 애플리케이션에서는 이벤트 발행 빈이 ApplicationContextAware를 구현하면 이벤트를 발행할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.