YAML 은 YAML Ain't Markup Language 약자이며 데이터 중심의 마크업 언어이다.
YAML 을 설정하기위해서는 SnakeYAML 라이브러리가 필요하다. 스프링부트에 경우는 스타터에 해당라이브러리가 포함되어있다.
1 2 3 4 5 | server.port = 8443 server.ssl.key-store = keystore.p12 server.ssl.key-store-password = server.ssl.keyStoreType = PKCS12 server.ssl.keyAlias = tomcat |
[application.properties]
1 2 3 4 5 6 7 | server: ssl: key-store: keystore.p12 key-store-password: keyStoreType: PKCS12 keyAlias: tomcat port : 8443 | cs |
[application.yml]
프로퍼티 파일을 yml로 변경할경우 다음과 같이 구성이된다. 계층 구조를 훨씬 쉽게 파악할 수 있다.
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 | server: port : 80 --- spring: profiles: active: local # 기본 환경 선택 # local 환경 --- spring: profiles: local datasource: data: classpath:data-h2.sql # 시작할때 실행시킬 script jpa: show-sql: true hibernate: ddl-auto: create-drop h2: console: enabled: true # 운영 환경 --- spring: profiles: set1 server: port: 8081 |
로컬, 개발 , 운영 환경을 구분할때 --- 기준으로 설정값을 나눈다. 최상단 영역은 디폴트로 적용시킬 값을 위치하면된다.
프로퍼티 값 읽어오기
@Value 어노테이션과 @ConfigurationProperties 사용하여 읽어올 수 있다.
1 2 3 4 5 6 7 | property: test: name : property depth test propertyTest : test propertyTestList : a,b,c | cs |
[application.yml]
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 | import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Map; ;import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; @RunWith(SpringRunner.class) @SpringBootTest public class PropertyTest { @Autowired FruitProeprty fruitProeprty; @Test public void test() { List<Map> fruitData = fruitProeprty.getList(); assertThat(fruitData.get(0).get("name"), is("banana")); assertThat(fruitData.get(0).get("color"), is("yellow")); assertThat(fruitData.get(1).get("name"), is("apple")); assertThat(fruitData.get(1).get("color"), is("red")); assertThat(fruitData.get(2).get("name"), is("water melon")); assertThat(fruitData.get(2).get("color"), is("green")); } } | cs |
1 2 3 4 5 6 7 8 | fruit: list: - name : banana color : yellow - name : apple color : red - name : water melon color : green |
[application.yml]
- 구분자를 사용하면 리스트로 인식한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; @Data @Component @ConfigurationProperties("fruit") public class FruitProeprty { private List<Map> list; } | cs |
[fruit 맵핑할 클래스를 생성한다.]
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 | import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; import java.util.Map; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; @RunWith(SpringRunner.class) @SpringBootTest public class PropertyTest { @Autowired FruitProeprty fruitProeprty; @Test public void test() { List<Map> fruitData = fruitProeprty.getList(); assertThat(fruitData.get(0).get("name"), is("banana")); assertThat(fruitData.get(0).get("color"), is("yellow")); assertThat(fruitData.get(1).get("name"), is("apple")); assertThat(fruitData.get(1).get("color"), is("red")); assertThat(fruitData.get(2).get("name"), is("water melon")); assertThat(fruitData.get(2).get("color"), is("green")); } } | cs |
참고링크
http://wonwoo.ml/index.php/post/647