[java] SnakeYAML을 사용하여 YAML 파일의 참조값 처리하기
YAML은 인간이 읽고 쓰기에 용이한 데이터 직렬화 형식입니다. 그러나 YAML 파일에는 동일한 값을 여러 번 중복해서 사용하는 경우가 있을 수 있습니다. 이런 경우에는 참조를 사용하여 중복을 피하고 메모리를 절약할 수 있습니다. 이번 포스트에서는 Java의 SnakeYAML 라이브러리를 사용하여 YAML 파일에서 참조값을 처리하는 방법에 대해 알아보겠습니다.
1. SnakeYAML 라이브러리 설치하기
SnakeYAML은 Maven 또는 Gradle을 사용하여 쉽게 프로젝트에 추가할 수 있습니다. 아래는 Maven을 사용하는 경우의 예시입니다.
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.27</version>
</dependency>
2. YAML 파일 작성하기
먼저, YAML 파일에 참조를 사용하기 위해 $ref
키를 사용할 것입니다. 아래는 예시 YAML 파일입니다.
# settings.yml
database:
host: localhost
port: 3306
username: admin
password: password
server:
url: http://example.com
api_key: secret_key
service:
url: $ref{server.url}
admin_username: $ref{database.username}
admin_password: $ref{database.password}
위의 YAML 파일에서는 service.url
, service.admin_username
, service.admin_password
값이 각각 $ref{}
로 참조되어 있습니다.
3. SnakeYAML을 사용하여 YAML 파일 로드하기
Java 코드에서 SnakeYAML을 사용하여 YAML 파일을 로드하여 이를 처리할 수 있습니다.
import org.yaml.snakeyaml.Yaml;
public class YamlExample {
public static void main(String[] args) {
Yaml yaml = new Yaml();
Map<String, Object> data = yaml.load(new FileReader("settings.yml"));
String serviceUrl = (String) data.get("service").get("url");
String adminUsername = (String) data.get("service").get("admin_username");
String adminPassword = (String) data.get("service").get("admin_password");
System.out.println("Service URL: " + serviceUrl);
System.out.println("Admin Username: " + adminUsername);
System.out.println("Admin Password: " + adminPassword);
}
}
위의 코드는 SnakeYAML 라이브러리를 사용하여 YAML 파일을 로드하고, 참조된 값을 가져와서 출력하는 예제입니다.
4. 실행결과
위의 코드를 실행하면 다음과 같은 결과가 출력될 것입니다.
Service URL: http://example.com
Admin Username: admin
Admin Password: password
위의 결과에서 확인할 수 있듯이, SnakeYAML을 사용하여 YAML 파일에서 참조값을 처리할 수 있습니다. 이를 통해 중복을 피하고 더 효율적으로 YAML 파일을 관리할 수 있습니다.