SpringApplication이 시작한 시점에 특정 코드를 실행하고자 한다면, ApplicationRunner나 CommandLineRunner를 활용할 수 있다.
두 개의 Runner 인터페이스 중 하나를 선택하여 implements하여 메서드를 오버라이드하고, 빈으로 등록해주면 사전 준비는 완료된다.
ApplicationRunner
run(ApplicationArguments args) 메서드 하나만 오버라이드하면 되며 파라미터인 ApplicationArguments에 바인딩된 어플리케이션 아규먼트들에 접근이 가능하다.
ApplicationArguments는 여러가지 편리한 메서드를 제공하고 있다. 그러므로 아래에서 설명할 CommandLineRunner보다 사용이 권장된다. 아래는 커맨드로 Option, Non-Option Argument를 설정 후 기동 했을 때의 테스트 코드이다.
어플리케이션 기동 커맨드 : java -jar MySpringBootApp.jar alone1 alone2 --key1=value1 --key2=value2
@Component
public class SimpleApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
System.out.println("======================================================");
System.out.println("ApplicationRunner - ApplicationArguments ");
System.out.println("NonOption Arguments : " + args.getNonOptionArgs());
System.out.println("Option Arguments Names : " + args.getOptionNames());
System.out.println("key1의 value : " + args.getOptionValues("key1"));
System.out.println("key2의 value : " + args.getOptionValues("key2"));
System.out.println("======================================================");
}
}
====================================================== ApplicationRunner - ApplicationArguments NonOption Arguments : [alone1, alone2] Option Arguments Names : [key1, key2] key1의 value : [value1] key2의 value : [value2] ====================================================== |
CommandLineRunner
ApplicationRunner와 기능은 같지만 전달되는 아규먼트가 더 불친절하다. 그리고 Option과 Non-Option 아규먼트의 구분도 없고 아규먼트도 단순 배열로 전달된다.
위와 동일한 커맨드로 기동 했을 때의 코드와 로그이다.
어플리케이션 기동 커맨드 : java -jar MySpringBootApp.jar alone1 alone2 --key1=value1 --key2=value2
@Component
public class SimpleCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("======================================================");
System.out.println("CommandLineRunner - String... ");
for(String s : args){
System.out.println("argument : " + s);
}
System.out.println("======================================================");
}
}
====================================================== CommandLineRunner - String... argument : alone1 argument : alone2 argument : --key1=value1 argument : --key2=value2 ====================================================== |
'개발 > Spring & Spring Boot' 카테고리의 다른 글
SpringBoot 프로퍼티(외부설정) (0) | 2020.12.05 |
---|---|
Springboot Property Binding(스프링부트 프로퍼티 바인딩) (0) | 2020.12.05 |
SpringApplication(FailureAnalyzers, Application Events and Listeners, WebApplicationType) (0) | 2020.12.02 |
Springboot의 자동설정(starter 라이브러리) (0) | 2020.12.02 |
@SpringBootApplication에 대해서(Springboot 기본구조) (0) | 2020.12.01 |