Spring Boot

[Spring Boot] 스프링 구동 시에 특정 코드 자동 실행시키기 (Command Line Runner, Application Runner)

공대생안씨 2023. 11. 22. 21:52

스프링 구동 시점에 특정 코드를 자동으로 실행시키는 방법은 2가지가 있음

  1. Command Line Runner
  2. Application Runner

 

1. Command Line Runner

 

1-1. Command Line Runner 란

  • Spring Application 내에 Bean이 포함될 때 Bean이 실행되어야 함을 나타내는데 사용되는 인터페이스

 

1-2. Command Line Runner 사용 방법

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
public class CommandLineRunnerExample implements CommandLineRunner {

	@Override
    public void run(String... args) throws Exception{
    
    	System.out.println("Arrays.toString(args) = " + Arrays.toString(args));
        System.out.println("테스트!");
    }
}
  • 스프링 구동 시점에 실행시키고 싶은 코드를 작성한 클래스에 @Component 어노테이션 선언
  • public void run (String... args) 를 오버라이딩 해서 사용 (@Override)

 

1-3. 실행 결과

  • 넘겨준 문자열이 없기 때문에 []로만 출력됨
  • 문자열이 넘어가는 지 검증하기 위해 터미널로 실행

 

  • 터미널에서 Jar 파일 실행 (문자열 포함)
java -jar demo-0.0.1-SNAPSHOT.jar "테스트1" abc test 123

 

  • 터미널에서 실행 결과 => 넘겨준 문자열들을 포함하여 출력함을 확인

 

 

2. Application Runner

 

2-1. Application Runner 란

  • Command Line Runner와 동일하게 스프링 구동시점에 run 메서드를 실행하는 인터페이스
  • 파라미터로 단순 String 배열 대신 Application Arguments에 접근해야 하는 경우 사용

 

2-2. Application Runner 사용 방법

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
public class ApplicationRunnerExample implements ApplicationRunner {

	@Override
    public void run(ApplicationArguments args) throws Exception{
    
    	System.out.println("Arrays.toString(args) = " + Arrays.toString(args.getSourceArgs()));
        System.out.println("테스트!");
    }
}
  • 스프링 구동 시점에 실행시키고 싶은 코드를 작성한 클래스에 @Component 어노테이션 선언
  • public void run (ApplicationArguments args)를 오버라이딩해서 사용 (@Override)

 

2-3. 실행 결과

  • 위에서와 마찬가지로 넘겨지는 ApplicationArguments 를 확인해보기 위해 터미널에서 실행

 

  • 터미널에서 Jar 파일 실행 (문자열 포함)
java -jar demo-0.0.1-SNAPSHOT.jar ApplicationRunnerTest 테스트2 456

 

  • 터미널에서 실행 결과 => 넘겨준 문자열들을 포함하여 출력함을 확인

 

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/CommandLineRunner.html

 

CommandLineRunner (Spring Boot 3.2.4 API)

Callback used to run the bean.

docs.spring.io

 

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/ApplicationRunner.html

 

ApplicationRunner (Spring Boot 3.2.4 API)

Callback used to run the bean.

docs.spring.io