본문 바로가기

ApplicationEvent

(2)
Spring ApplicationEvent 비동기로 처리될 것만 같지? ApplicationEventListener는 비동기가 아니다 스프링(Spring) 프레임워크를 공부하면서 왠지 모르게 가끔씩 이벤트 드리븐(Event Driven)이라는 단어도 듣게 됐다. 뿐만 아니라 스프링 5 이후로는 WebFlux가 등장하면서 논블록킹(NonBlocking), 리액티브(Reactive)라는 단어도 듣게 됐다. 그 둘이 무슨 연관성이냐 할 수 있지만, 개념에 대해서 정리가 안되어서 그런지 나는 이벤트 = 비동기 같은 생각을 은연중에 하게되었다. 이런 상황이다 보니 ApplicationContext를 이용하여 ApplicationEvent를 Publish하고 Listen하는 기능을 알았을 때, '아 이렇게 하는 거구나' 하고 넘겼고, 아무 생각 없이 "비동기"로 처리되겠거니 했다. 그..
스프링 애플리케이션이 시작, 종료될 때 수행할 메서드 지정하는 방법 + 스프링 빈(Bean)이 생성, 소멸될 때 수행할 메서드 지정하는 방법(graceful 종료, CommandLineRunner, ApplicationListener, InitializingBea.. 스프링 애플리케이션 시작과 끝 스프링(스프링부트)으로 애플리케이션을 개발했을 때, 애플리케이션이 시작할 때 어떤 동작을 하고 싶은 경우가 있고, 반대로 애플리케이션이 종료되기 직전에 어떤 동작을 하고 싶은 경우가 있다. 예를들면 어떤 Configuration에서 값을 가져와서 초기 값을 설정한다든지, 애플리케이션이 종료되기 전에 하던 작업과 객체들을 우아하게(graceful) 종료한다든지 하는 작업들이다. 더 쉽게 표현하면 애플리케이션 입장에서의 생성자와 소멸자가 필요할 때가 있다는 것이다. 이 문제를 스프링에서는 인터페이스로 아주 쉽게 제공해준다. 뿐만 아니라 Spring bean이 생성될 때와 삭제될 때 수행하는 메서드를 구현할 수 있게 인터페이스로 제공한다. 아래에 코드를 보자! 1 2 3 4 5 ..