Spring Boot에서 SpringApplication이 구동 될 때 특정 코드를 실행하고 싶으면 ApplicationRunner, CommandLineRunner를 사용하면됩니다. 둘다 run 매서드 내부에 구현한 코드를 SpringApplication 구동시 실행하지만 차이점은 arguments를 받는 Parameter에 있습니다.
ApplicationRunner : ApplicationArguments
CommandLineRunner : String... (String 배열)
ApplicationRunner 구현
package devnam.tistory.com;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class ApplicationRunnerTest implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
System.out.println("======================================================");
System.out.println("ApplicationRunner Example");
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("======================================================");
}
}
CommandLineRunner 구현
package devnam.tistory.com;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class CommandLineRunnerTest implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("======================================================");
System.out.println("CommandLineRunner Example");
for(String s : args){
System.out.println("argument : " + s);
}
System.out.println("======================================================");
}
}
arguments를 위와 같이 주고 Spring Boot App을 가동해줍니다.
결과값
====================================================== ApplicationRunner Example NonOption Arguments : [test1, test2] Option Arguments Names : [spring.output.ansi.enabled, key1, key2] key1의 value : [value1] key2의 value : [value2] ====================================================== ====================================================== CommandLineRunner Example argument : --spring.output.ansi.enabled=always argument : test1 argument : test2 argument : --key1=value1 argument : --key2=value2 ====================================================== |
하나의 Project에 ApplicationRunner, CommandLineRunner 둘다 함께 사용할 수있는데 순서를 지정하지 않으면 ApplicationRunner가 먼저 실행되고 CommandLineRunner가 실행됩니다. 만약 순서를 정하고 싶다면 @Component 어노테이션위에 @Order(1) , @Order(2) 와 같이 넣어주면 Order순으로 실행이됩니다.
'BACK-END > JAVA' 카테고리의 다른 글
Spring Boot : application.properties 대신 application.yml 사용하기 (0) | 2022.12.19 |
---|---|
STS : lombok(롬복) 설치 후 사용하기 (0) | 2022.12.15 |
Spring Boot : jdbcTemplate을 이용한 PostgreSQL DB연동법 (0) | 2022.12.09 |
Java list 동일한 크기로 분할 나누기 (Guava) (0) | 2022.12.05 |
댓글