[java] SnakeYAML을 사용하여 YAML 파일의 객체 생성하기
YAML은 인간이 쉽게 읽고 쓸 수 있는 데이터 직렬화 형식입니다. Java에서는 SnakeYAML 라이브러리를 사용하여 YAML 파일을 쉽게 파싱하고 객체로 변환할 수 있습니다.
SnakeYAML 라이브러리 추가하기
SnakeYAML 라이브러리를 사용하기 위해서는 먼저 Maven 또는 Gradle과 같은 빌드 도구에 의존성을 추가해야 합니다. 다음은 Maven을 사용하는 경우의 의존성을 추가하는 예시입니다.
<dependencies>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.27</version>
</dependency>
</dependencies>
YAML 파일 작성하기
먼저 YAML 파일을 작성해야 합니다. 예를 들어, 다음과 같은 YAML 파일이 있다고 가정해보겠습니다.
# config.yml
server:
ip: "127.0.0.1"
port: 8080
timeout: 5000
YAML 파일 파싱하기
다음으로, SnakeYAML을 사용하여 YAML 파일을 파싱하고 Java 객체로 변환해야 합니다. 다음은 위에서 작성한 config.yml
파일을 파싱하여 ServerConfig 객체로 변환하는 예시입니다.
import org.yaml.snakeyaml.Yaml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Main {
public static void main(String[] args) {
try {
// YAML 파일 읽기
Yaml yaml = new Yaml();
FileInputStream fileInputStream = new FileInputStream("config.yml");
// YAML 파일 파싱하여 객체 생성
ServerConfig serverConfig = yaml.loadAs(fileInputStream, ServerConfig.class);
// 생성된 객체 사용
System.out.println("Server IP: " + serverConfig.getServer().getIp());
System.out.println("Server Port: " + serverConfig.getServer().getPort());
System.out.println("Server Timeout: " + serverConfig.getServer().getTimeout());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
public class ServerConfig {
private Server server;
// Getter, Setter 생략
public static class Server {
private String ip;
private int port;
private int timeout;
// Getter, Setter 생략
}
}
위 예시 코드에서는 config.yml
YAML 파일을 FileInputStream
으로 읽어들이고, Yaml
객체를 사용하여 loadAs
메서드를 호출하여 ServerConfig
클래스로 객체를 생성합니다. 생성된 객체는 getServer()
를 통해 접근할 수 있으며, 필요한 정보를 출력하는 예시입니다.
SnakeYAML을 사용하여 YAML 파일의 객체를 생성하는 방법에 대해 알아보았습니다. YAML 파일에 저장된 정보를 Java 객체로 변환하는 것은 개발 과정에서 매우 유용하며, 간단한 설정 파일부터 복잡한 데이터 구조까지 다양한 용도로 사용할 수 있습니다.
참고 자료
- SnakeYAML GitHub 저장소: https://github.com/snakeyaml/snakeyaml