SpringApplicationEvent 가 무엇인지 알아본다.SpringApplicationEvent 의 사용법을 알아본다.
SpringApplication.run()#
@SpringBootApplication
public class AccountCoreApplication {
public static void main(String[] args) {
SpringApplication.run(AccountCoreApplication.class, args);
}
}
- Spring Boot를 사용하면 main 메서드에 다음과 같은 함수를 호출하는 것을 볼 수 있다.

- run 메서드를 호출하면
SpringApplication 생성자를 호출하는 것을 확인할 수 있다.

SpringApplication 생성자를 호출하면 ApplicationListener를 로드하여 등록하게 된다.
ApplicationListener#
- 관심이 있는 이벤트에 대한
ApplicationListener를 ApplicationContext에 등록하면 ApplicationEvent가 그에 따라 필터링되고, 일치하는 이벤트에 대해서만 Listener가 호출이 된다. ApplicationEvent는 이벤트를 나타내는 추상화 클래스다.- 사용자가
ApplicationEvent를 구현하여 이벤트를 publish하고 handling할 수 있다. - Spring Boot에서는
ApplicationEvent를 구현한 SpringApplicationEvent 추상화 클래스를 만들었다.SpringApplicationEvent의 종류
ApplicationListener 등록 방법#
- 일반적으로 사용할 수 있는
ApplicationListener를 등록 방법은 2가지다.@EventListener 애너테이션을 통한 listener 등록 방법ApplicationListner 인터페이스 구현 및 Bean으로 등록 방법
- 하지만
SpringApplicationEvent 중 일부(ApplicationEnvironmentPreparedEvent 등) event는 Spring 자동 구성 및 빈 생성이 되기 전에 발생한다.- 따라서 애노테이션이나 Bean 등록 방법 대신
SpringApplication::addListner 메서드를 통해서 등록해야된다. 
참고 자료#