반응형
Springboot Application을 시작하거나 종료 할때
특정한 로직을 수행해야할 경우가 있습니다.
로그를 찍는다거나, 백업을 한다거나 등등...
이번 포스팅에서는 Springboot에서 시작, 종료 시 이벤트를 받아 로직 수행을 처리하는 방법을 정리합니다.
제 테스트 환경은 Kotlin + Springboot 3.1.4 입니다.
목차
1. Application 시작 이벤트 리스너
import org.springframework.boot.context.event.ApplicationReadyEvent
import org.springframework.context.ApplicationListener
import org.springframework.stereotype.Component
@Component
class ApplicationReadyEventListener : ApplicationListener<ApplicationReadyEvent> {
override fun onApplicationEvent(event: ApplicationReadyEvent) {
println("start up with profile: ${System.getProperty("spring.profiles.active")}")
return
}
}
ApplicationListener 인터페이스를 구현하면 됩니다.
이 때, ApplicationEvent 는 ApplicationReadyEvent로 해주면 됩니다.
위 코드는 간단하게 Springboot 실행 Profile을 출력하는 코드입니다.
2. Application 종료 이벤트 리스너
@Component
class ContextClosedEventListener : ApplicationListener<ContextClosedEvent> {
override fun onApplicationEvent(event: ContextClosedEvent) {
println("shutdown application.")
return
}
}
마찬가지로 ApplicationListener를 구현하면 됩니다.
종료 이벤트를 처리하려면 ContextClosedEvent입니다.
3. 실행 결과
2024-08-31T14:07:37.047+09:00 INFO 6412 --- [ main] m.m.moduleapiexam.ApiExamApplicationKt : Started ApiExamApplicationKt in 0.806 seconds (process running for 0.987)
start up with profile: dev
2024-08-31T14:07:37.401+09:00 INFO 6412 --- [on(3)-127.0.0.1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-08-31T14:07:37.401+09:00 INFO 6412 --- [on(3)-127.0.0.1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024-08-31T14:07:37.402+09:00 INFO 6412 --- [on(3)-127.0.0.1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
shutdown application.
Application을 시작 / 종료 해보면 위와 같이 정상적으로 로그가 출력되는 것을 확인 할 수 있습니다.
반응형
'개발 이야기 > Springboot' 카테고리의 다른 글
Springboot 에서 Gzip으로 압축(with Kotlin) (0) | 2024.07.06 |
---|---|
AWS S3 타계정의 버킷 업로드 시 BucketOwnerFullControl 설정 (0) | 2024.06.06 |
DTO에서 LocalDateTime 유효성 체크와 에러핸들링 방법 (1) | 2024.06.01 |
JdbcTemplate로 batchUpdate 사용해보기 (0) | 2024.05.28 |
Springbatch에서 메타테이블 없이 실행(Springbatch 5) (0) | 2024.03.19 |