속성 파일 이외의 설정 값을 전달

편집일시: 2017-08-31 00:44 조회수: 623 댓글수: 0
## 속성 파일 이외의 설정 값을 전달 #### Main.java ``` package sample.springboot; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class Main { public static void main(String[] args) { try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) { Main m = ctx.getBean(Main.class); m.hello(); } } @Value("${value}") private String value; public void hello() { System.out.println("value=" + value); } } ``` ### 커멘트 라인 인수 ``` $java -jar build/libs/spring-boot-sample.jar --value=commandline value=commandline ``` - --[속성 이름]=[값]에서 커멘트 라인 인수에서 설정 값을 전달한다. ### Java 시스템 속성 ``` $java -Dvalue=systemproperty -jar build/libs/spring-boot-sample.jar value=systemproperty ``` - --D [속성 이름]=[값]에서 시스템 속성에서 설정 값을 전달한다. ### OS 환경 변수 ``` $ set value=osenvironment $ java -jar build/libs/spring-boot-sample.jar value=osenvironment ``` ※ OS는 Windows이다. ## 기본 속성 #### Main.java ``` package sample.springboot; import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class Main { public static void main(String[] args) { Map<String, Object> properties = new HashMap<>(); properties.put("value", "default property"); SpringApplication app = new SpringApplication(Main.class); app.setDefaultProperties(properties); try (ConfigurableApplicationContext ctx = app.run(args)) { Main m = ctx.getBean(Main.class); m.hello(); } } @Value("${value}") private String value; public void hello() { System.out.println("value=" + value); } } ``` ### 실행결과 ``` value=default property ``` SpringApplication#setDefaultProperties(Map&lt;String, Object&gt;) で、デフォルトの設定を指定できる。 ## 우선 순위 속성 파일의 경우와 마찬가지로, 설정 값의 전달 방법에는 우선 순위가 있으며 우선 순위가 높은 방법이 낮은 방법으로 지정된 설정 값을 덮어 쓰기한다. 우선 순위는 다음과 같이 되어있다. 1. 커멘드 라인 인수 2. JNDI의 java : comp / env로부터 취득한 속성 3. 시스템 속성 4. OS 환경 변수 5. jar 외부의 프로필 지정된 속성 파일 6. jar 안에 있는 프로필 지정된 속성 파일 7. jar 밖에 있는 속성 파일 8. jar 안에 있는 속성 파일 9. @PropertySource에서 지정된 속성 파일 10. 기본 속성 숫자가 작은 쪽이 우선 순위가 높다.

이전 글 : Yaml 사용
다음 글 : 메일 송신