[Day 26 | Spring] CommandLineRunner 인터페이스

y♡ding·2024년 11월 18일

데브코스 TIL - Spring

목록 보기
2/46

CommandLineRunner 인터페이스스프링 부트 애플리케이션이 시작된 후 자동으로 실행할 로직을 정의할 수 있는 인터페이스입니다. 애플리케이션이 실행될 때 초기화 작업이나 설정 작업을 자동으로 수행하고 싶을 때 자주 사용됩니다.

CommandLineRunner 기본 개념

  • 실행 시점: 스프링 부트 애플리케이션의 모든 빈이 초기화된 후, run() 메서드가 호출됩니다.
  • 주요 목적: 데이터베이스 초기화, 설정 로깅, 리소스 준비 등의 작업을 애플리케이션 시작 시에 실행할 수 있습니다.
  • 메서드: run(String... args) 메서드를 구현하여 작업 내용을 작성합니다.
  • 실행: 애플리케이션이 실행되면서 run() 메서드가 자동으로 호출됩니다.

CommandLineRunner 구현 예제

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

@Component
public class MyCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("애플리케이션이 시작될 때 실행되는 로직입니다.");

        // 명령줄 인수가 있을 경우 출력
        if (args.length > 0) {
            System.out.println("명령줄 인수:");
            for (String arg : args) {
                System.out.println(arg);
            }
        }
    }
}

코드 설명

  1. @Component 어노테이션을 사용하여 스프링 빈으로 등록합니다.
  2. run(String... args) 메서드에 실행할 로직을 작성합니다.
  3. args 파라미터는 애플리케이션을 실행할 때 함께 전달된 명령줄 인수입니다.

예제 실행 결과

애플리케이션을 다음과 같이 실행했다면:

$ java -jar myapp.jar arg1 arg2 arg3

실행 시 다음과 같은 결과가 출력됩니다:

애플리케이션이 시작될 때 실행되는 로직입니다.
명령줄 인수:
arg1
arg2
arg3

CommandLineRunner의 사용 사례

  1. 데이터베이스 초기화: 애플리케이션 시작 시 DB에 기본 데이터를 추가할 때 사용합니다.
  2. 설정 값 로깅: 환경 설정 값을 로깅하여 확인하거나, 필수 설정을 점검할 때 유용합니다.
  3. 파일 또는 리소스 로딩: 시작 시 필요한 파일을 미리 로딩하거나, 설정 파일을 읽는 작업 등에 사용할 수 있습니다.

요약

  • CommandLineRunner: 스프링 부트 애플리케이션의 모든 설정이 완료된 후 실행되는 초기화 인터페이스입니다.
  • 주요 목적: 애플리케이션 초기 설정, 데이터 로딩, 설정 확인 등의 작업을 수행합니다.
  • 파라미터 처리: run(String... args)를 통해 명령줄 인수를 다룹니다.
  • 비슷한 인터페이스: ApplicationRunnerApplicationArguments 객체를 사용해 더 유연한 명령줄 인수 처리가 가능합니다.

0개의 댓글