- #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) 를 사용해 순서를 정할 수 있다.
'무조건 따라하기 > 스프링부트(SpringBoot)' 카테고리의 다른 글
[스프링 부트 개념과 활용] SpringApplication 1부 (0) | 2022.05.03 |
---|