티스토리 뷰

반응형

스프링 부트 애플리케이션을 실행할 때, 명령어 뒤에 붙는 인자(argument)는 애플리케이션에 전달되는 값으로 사용됩니다. 이 인자 중에서 --가 붙는 인자는 애플리케이션의 실행 옵션을 지정하는 것이며, --가 붙지 않는 인자는 애플리케이션에 전달되는 인자 값으로 사용됩니다.

--가 붙는 인자는 애플리케이션의 실행에 영향을 미치는 설정을 지정할 수 있습니다. 예를 들어, --server.port=8080과 같이 HTTP 포트 번호를 설정하거나, --spring.profiles.active=dev와 같이 애플리케이션 프로파일을 설정할 수 있습니다.

반면, --가 붙지 않는 인자는 애플리케이션에 전달되는 값으로 사용됩니다. 예를 들어, java -jar myapp.jar arg1 arg2와 같이 애플리케이션 실행 명령어 뒤에 전달되는 인자 값은 애플리케이션에서 사용할 수 있는 인자 값으로 사용됩니다.

따라서, --가 붙는 인자와 --가 붙지 않는 인자는 각각 서로 다른 역할을 하기 때문에, 각각의 용도에 맞게 사용해야 합니다. 이를 이해하고 적절하게 사용하면, 스프링 부트 애플리케이션의 실행 옵션과 인자 값을 설정하는 데 도움이 됩니다.

 

스프링 배치에서

스프링 배치에서 --가 붙은 인자는 JobParameters로 직접 전달되지 않습니다. JobParameters는 --가 붙지 않은 인자를 사용하여 생성됩니다.

 

예를들어 배치 실행시 인자로 `--job.name=myBatchJobName baseDateTime=20230509180000`를 사용하면, --job.name 인자는 배치를 실행하기 위한 인자로 사용되고, baseDateTime인자는 JobParameters로 전달되어 애플리케이션 실행시에 사용됩니다.


만약 --가 붙은 인자를 JobParameters에서 사용하고 싶다면, JobParameters를 생성하기 전에 --가 붙은 인자를 읽어와야 합니다. 이를 위해서는 CommandLineRunner나 ApplicationRunner 인터페이스를 구현한 빈을 등록하여 SpringApplication이 실행될 때 해당 빈이 실행되도록 설정해야 합니다.

CommandLineRunner나 ApplicationRunner를 구현한 빈은 애플리케이션 실행 시점에 실행되며, SpringApplication이 실행될 때 run 메서드가 호출됩니다. 이때 String[] 타입의 args 파라미터를 통해 애플리케이션 실행 명령어 뒤에 전달된 인자를 전달받을 수 있습니다. 이후 이 인자를 사용하여 JobParameters를 생성하거나, JobParameters 생성에 필요한 정보를 추출할 수 있습니다.

따라서, --가 붙은 인자를 JobParameters에서 사용하려면, CommandLineRunner나 ApplicationRunner 인터페이스를 구현한 빈을 등록하여 SpringApplication이 실행될 때 해당 빈이 실행되도록 설정하고, 해당 빈에서 args 파라미터를 통해 --가 붙은 인자를 추출하여 사용해야 합니다.

반응형
댓글