SpringApplication :: Spring Boot
스프링 부트 애플리케이션을 IntelliJ IDEA Ultimate 버전에서 실행할 때, 명령줄 인자(Command Line Arguments)를 설정하여 SpringApplication에 전달할 수 있습니다. 이 인자들은 CommandLineRunner나 ApplicationRunner와 같은 인터페이스에서 사용할 수 있으며, 애플리케이션의 초기 설정, 환경 설정, 또는 특정 기능 테스트에 유용합니다.
arg1 arg2 key=valueDspring.profiles.active=dev).Program arguments와 다르게 JVM에 전달되는 인자로, 스프링의 프로파일 설정 등에 사용됩니다.SpringApplication의 실행 시점에 전달되어, args 배열로 CommandLineRunner 또는 ApplicationRunner 등에서 사용할 수 있습니다.아래는 CommandLineRunner를 사용하여 args 파라미터를 출력하는 간단한 예제입니다.
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("명령줄 인자 출력:");
for (String arg : args) {
System.out.println(arg);
}
}
}
위 코드를 실행할 때 Program arguments 필드에 다음과 같이 입력한다면:
Hello World key=value
출력은 다음과 같습니다:
명령줄 인자 출력:
Hello
World
key=value
이처럼 IntelliJ에서 Program arguments 필드에 인자를 설정하면, 스프링 부트 애플리케이션이 실행되는 동안 명령줄 인수로 해당 값들을 사용할 수 있습니다.
package org.example.boot;
import org.springframework.boot.Banner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@SpringBootApplication
public class Boot01Application implements CommandLineRunner {
public static void main(String[] args) {
// Spring Boot 시작
// 1.
SpringApplication.run(Boot01Application.class, args);
/*
// 2.
SpringApplication app = new SpringApplication(Boot01Application.class);
// 시작 시 환경 설정
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
*/
// 3.
/* new SpringApplicationBuilder()
.sources(Boot01Application.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
*/
// 프로그램 시작 초기값
// 다른 클래스에서도 활용 가능
System.out.println("HEllo Spring 1");
}
@Override
public void run(String... args) throws Exception {
System.out.println("HEllo Spring 2");
}
}
//-
package org.example.boot;
import org.springframework.boot.ApplicationArguments;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class ArgumentTest {
public ArgumentTest(ApplicationArguments args) {
System.out.println("foo : " + args.containsOption("foo")); // false
System.out.println("bar : " + args.containsOption("bar")); // true
boolean bar = args.containsOption("bar");
List<String> files = args.getNonOptionArgs();
if (bar) {
System.out.println(files);
}
}
}
/* 결과
Hello Spring 2
Hello Spring 1 */