Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Be an Overachiever

SnakeYAML을 통해 YAML의 값을 클래스 프로퍼티로 매핑하기 본문

카테고리 없음

SnakeYAML을 통해 YAML의 값을 클래스 프로퍼티로 매핑하기

devson119 2018. 10. 14. 00:45
Spring Boot 설정파일로 properties 파일을 사용하지만 확장자를 변경해서 .yml 파일도 사용할 있다.
또한 @EnableConfigurationProperties 통해 설정파일의 값을 클래스 프로퍼티로 매핑할 있다.
이러한 YAML 파일을 사용해서 편리한 기능을 사용할 있는 것은 Spring Boot 특징인 자동 설정 덕분이다.
그러면 어떤 라이브러리를 기본으로 사용하기 때문에 가능한 것일까?
 
그것은 바로 SnakeYAML이다.
그럼 SnakeYAML 사용해서 YAML 값을 클래스 프로퍼티로 매핑해보자.
 
클래스패스에 다음과 같이 test.yml 파일을 생성하자.
1
2
3
4
5
user:
    name: devson
    age: 20
 
test: This is test string for snake yaml
cs
 
test.yml 매핑하기 위한 YamlTest클래스를 생성하자.
1
2
3
4
5
6
7
8
9
10
11
@Data
public class YamlTest {
    private User user;
    private String test;
 
    @Data
    public static class User {
        private String name;
        private int age;
    }
}
cs
 
예제 코드는 간단하게 하기위해 lombok 사용하였는데 
프로퍼티에 public getter/setter 있어야 해당 프로퍼티를 매핑할 수가 있다.
 
이제 SnakeYAML library 사용해서 매핑을 해보자
1
2
3
4
5
public static void main(String[] args) throws IOException {
    Yaml yaml = new Yaml(new Constructor(YamlTest.class));
    YamlTest test = yaml.load(new ClassPathResource("test.yml").getInputStream());
    System.out.println(test);
}
cs
 
결과는 다음과 같이 나온다.
1
YamlTest(user=YamlTest.User(name=devson, age=20), test=This is test string for snake yaml)
cs
 
간단한 사용법은 위와 같고 자세한 사용법은 document에서 살펴보길 바란다.


Comments