개발 이야기/Springboot

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

농개 2024. 8. 31. 14:28
반응형

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

     

     

    반응형