본문 바로가기
개발 이야기/Springboot

Springboot App 시작, 종료시 로직 실행

by 농개 2024. 8. 31.
반응형

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을 시작 / 종료 해보면 위와 같이 정상적으로 로그가 출력되는 것을 확인 할 수 있습니다.

     

     

    반응형