ApplicationRunner,CommandLineRunner
개요
스프링 부트 애플리케이션이 구동될 때마다 앞서 실행시키고 싶은 코드가 있다면, ApplicationRenner, CommandLineRunner 를 이용해서 처리할 수 있다.
ApplicationRunner
- 코드 예시는 아래와 같다.
@Component
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("ApplicationRunner start!");
}
}
- 위와 같이 설정하면 구동 시점에 run 메소드의 코드가 실행된다.
- ApplicationArguments 타입의 객체가 run() 메소드의 인자로 넘어온다.
CommandLineRunner
- 코드 예시는 아래와 같다.
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner start!");
}
}
- ApplicationRunner 와 run() 메소드와 차이점은 run() 메소드의 인자다.
- 위의 코드를 아래와 같이 @Bean 으로 등록해서 대체할 수 있다.
@SpringBootApplication
public class JavaExampleApplication {
public static void main(String[] args) {
SpringApplication.run(JavaExampleApplication.class, args);
}
@Bean
public CommandLineRunner test(MyRepository myRepository) {
return new CommandLineRunner() {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner start!");
}
};
}
}
@EventListener
- @EventListener 를 이용해서 위의 기능들을 더 간단하게 처리할 수 있다.
- 가장 최신에 나온 방법이다.
- 코드 예시는 아래와 같다.
@SpringBootApplication
public class SpringinitApplication {
public static void main(String[] args) {
SpringApplication.run(SpringinitApplication.class, args);
}
@EventListener(ApplicationReadyEvent.class)
public void init(){
System.out.println("Hello EventListener!! ApplicationReadyEvent");
}
}
- 스프링은 애플리케이션이 구동되어 서비스 요청을 받을 준비가 되었을 때, ApplicationReadyEvent 이벤트를 발생한다.
- 따라서 애플리케이션 구동이 완료되면 위와 같은 코드가 구동된다.
REFERENCES
'Spring' 카테고리의 다른 글
BindingResult (0) | 2022.02.26 |
---|---|
Bean Validation (BindingResult 개념을 먼저 숙지 해야된다.) (0) | 2022.02.26 |
API 예외처리 (0) | 2022.02.26 |
Spring AOP (0) | 2022.02.26 |
@Valid, @Validated (0) | 2022.02.26 |