반응형
Spring boot 실행할 때 args 를 전달해서 사용하는 방법입니다.
Spring boot에서 org.springframework.boot.ApplicationArguments 를 제공하고 있어서 Bean으로 받아서 사용하면 간단하게 쓸 수 있습니다.
1. getSourceArgs
- 입력한 args 그대로 배열로 받아 옵니다.
2. getOptionNames
- args 앞에 "--" 를 붙이면 옵션으로 인식 합니다. 옵션 args 사용 형식 --NAME=VALUE
- "--fruit=apple" 이렇게 args를 사용하면
- getOptionName는 fruit 처럼 option name 들의 배열을 받아 옵니다.
3. getNonOptionArgs
- "--" 가 없는 경우 NonOption으로 인식합니다.
- "--" 가 없는 args 들의 값들을 받다 옵니다.
설명보다 아래 sample code를 보시는게 이해가 빠를 것 같습니다.
DemoApplication.java
1 2 3 4 5 6 7 8 9 10 11 12 | package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } |
Test.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.example.demo; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; @Component public class Test implements ApplicationListener<ContextRefreshedEvent> { @Autowired private ApplicationArguments applicationArguments; @Override public void onApplicationEvent(ContextRefreshedEvent event) { String[] sourceArgs = applicationArguments.getSourceArgs(); List<String> nonOptionArgs = applicationArguments.getNonOptionArgs(); Set<String> optionNames = applicationArguments.getOptionNames(); System.out.println("---원본 args---"); for (String sourceArg : sourceArgs) { System.out.println(sourceArg); } System.out.println("---옵션아닌 args---"); for (String nonOptionArg : nonOptionArgs) { System.out.println(nonOptionArg); } System.out.println("---옵션 args---"); for (String optionName : optionNames) { List<String> optionValues = applicationArguments.getOptionValues(optionName); for (String optionValue : optionValues) { System.out.println(optionName + ":" + optionValue); } } } } |
Execute
$JAVA_HOME/bin/java -jar demo.jar HI --MY_NAME=GONI --YOUR_NAME=GUEST --my.hobby=영화 --my.hobby=독서 |
* option args 에서 name 을 같게 해서 여러번 써서 List로 받을 수 있습니다.
Result
---원본 args--- --spring.output.ansi.enabled=always HI --MY_NAME=GONI --YOUR_NAME=GUEST --my.hobby=영화 --my.hobby=독서 ---옵션아닌 args--- HI ---옵션 args--- spring.output.ansi.enabled:always MY_NAME:GONI YOUR_NAME:GUEST my.hobby:영화 my.hobby:독서 |
반응형
'java' 카테고리의 다른 글
java php aes ecb nopadding (2) | 2018.08.29 |
---|---|
enum fasterxml jackson Serializing and DeSerializer (0) | 2018.08.24 |
[tomcat-jdbc] Found class org.apache.juli.logging.Log, but interface was expected (0) | 2018.08.24 |
Spring RestTemplate Request Parameter Encoding (0) | 2018.08.16 |
java file create time (0) | 2018.08.13 |
org.apache.ibatis.type.TypeException: Could not resolve type alias (4) | 2018.08.09 |
mybatis large result set. 대용량 select. fetchSize (0) | 2018.08.07 |
gc overhead limit exceeded excel download 엑셀 대용량 쓰기 (2) | 2018.08.06 |