Be an Overachiever
SnakeYAML을 통해 YAML의 값을 클래스 프로퍼티로 매핑하기 본문
Spring Boot는 설정파일로 properties 파일을 사용하지만 확장자를 변경해서 .yml 파일도 사용할 수 있다.
또한 @EnableConfigurationProperties을 통해 설정파일의 값을 클래스 프로퍼티로 매핑할 수 도 있다.
이러한 YAML 파일을 사용해서 편리한 기능을 사용할 수 있는 것은 Spring Boot의 특징인 자동 설정 덕분이다.
그러면 어떤 라이브러리를 기본으로 사용하기 때문에 가능한 것일까?
그럼 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 |
Comments