• #1.7. Application Events and Listeners
  • #Application 실행 후 뭔가 실행하고 싶을 때 ApplicationRunner를 추천

 

 

#1.7. Application Events and Listeners


Application과 같은 동선에 sampleListener 를 생성하고 ApplicationListener클래스를 implments 해주고 빈등록과 오버라이드를 해주면 끝 여기서는 문서에 나와있는 ApplicationStartingEvent를 등록해주었다.

package com.example.springapplication;

import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class SampleListener implements ApplicationListener<ApplicationStartingEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("==========================");
        System.out.println("Application is starting");
        System.out.println("==========================");
    }
}

Application run 해서  콘솔 맨 첫부분에 자신이 코딩한 문자가 찍힌다면 성공

하지만 찍히지 않는다면 아래 설정을해주자 Application 에서 직접 Listenner을 등록해줘야한다.

public static void main(String[] args) {
    new SpringApplicationBuilder()
            .sources(Application.class)
            .listeners(new SampleListener())
            .run(args);
}

or

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Application.class);
        app.addListeners(new SampleListener());
        app.run(args);
    }

 

이제는 ApplicationStartingEvent를 ApplicationStartedEvent로 변경해보자 이번에는 콘솔에 맨마지막에 찍는걸 볼 수 있다.

 

 

#Application 실행 후 뭔가 실행하고 싶을 때 ApplicationRunner를 추천


@Component를 해준 class에 ApplicationRunner 클래스를 implments 해서 run메소드를 오버라이딩해주면 된다.

추천하는 이유는 매개변수로 아래 변수를 받을 수 있기에 활용도가 높다.

ApplicationArguments args
@Component
public class SampleListener implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {

    }
}

ApplicationRunner  클래스 외에 CommendLineRunner 클래스의 run을 오버라이딩해도 된다.

CommendLineRunner 클래스 args 는 Array로 받아오는거 같다.

만약 ApplicationRunner를 여러개 정의해줬다면 @order(int) 를 사용해 순서를 정할 수 있다.

복사했습니다!