티스토리 뷰

들어가며

  • 필요에 따라 스프링부트 애플리케이션이 처음 실행되고 난 시점에 특정한 코드나 동작을 수행하고자 할 때가 있다.

  • 이때 사용할 수 있는 Application Runner, Command Line Runner를 알아보고자 한다.


ApplicationRunner

  • SpringBootApplication이 포함된 프로그램에서 특정 Bean을 Application 실행 후 실행하도록 하는 인터페이스이다.

  • 메소드는 run이라는 메소드뿐이며 ApplicationArguments를 받도록 되어 있다.

    • ApplicationArguments란 프로그램 실행시 명시되는 argument를 추상화된 API를 통해서 접근할 수 있는 인터페이스이다.

    • 자세한 내용은 아래 포스트 참고

 

[Spring Boot] ApplicationArguments 사용법

들어가며 SpringBoot에서 제공해주는 ApplicationArguments를 통해서 프로그램 argument를 간편하게 가져와서 사용하는 방법을 알아보도록 한다. Program arguments Java 프로그램을 실행할 때 실행 옵션에 Progra..

jinseongsoft.tistory.com

  • 사용법은 아래와 같이 실행하고자 하는 클래스를 Application Runner 인터페이스를 구현하도록 하여 만들어준다.

    • Bean 등록은 필수

@Component
public class AppStartupRunner implements ApplicationRunner {
    private static final Logger logger = LoggerFactory.getLogger(AppStartupRunner.class);
    @Override
    public void run(ApplicationArguments args) throws Exception {
        logger.info("Your application started with option names : {}", args.getOptionNames());
    }
}

Command Line Runner

  • Application Runner와 동일한 기능을 제공하는 인터페이스이다.

  • 다만 다르다는 점이 있다면 ApplicationArguments  대신에 기본적인 Array 형태로 argument를 받게 되어 있다.

    • 그래서 Application Runner를 사용하길 추천함

@Component
public class CommandLineAppStartupRunner implements CommandLineRunner {
    private static final Logger logger = LoggerFactory.getLogger(CommandLineAppStartupRunner.class);
    @Override
    public void run(String...args) throws Exception {
        logger.info("Application started with command-line arguments: {} . \n To kill this application, press Ctrl + C.", Arrays.toString(args));
    }
}

Order

  • 만약 Runner가 여러개 일때 각각의 실행 순서를 지정할 수가 있다.

  • @Order 어노테이션을 사용해서 지정을 해주며 낮은 숫자부터 순차적으로 실행이 된다.

@Component
@Order(1)
public class FirstRunner implements CommandLineRunner {
    @Override
    public void run(String...args) throws Exception {
    	//제일 먼저 실행됨
    }
}


@Component
@Order(2)
public class SecondRunner implements CommandLineRunner {
    @Override
    public void run(String...args) throws Exception {
    	//그 다음으로 실행됨
    }
}

끝으로

이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다! 

반응형
댓글