[java] SnakeYAML을 사용하여 YAML 파일의 범위 처리하기
YAML (YAML Ain’t Markup Language)은 사람이 쉽게 읽고 작성할 수 있는 데이터 직렬화 형식입니다. SnakeYAML은 Java에서 YAML 파일을 처리하기 위한 라이브러리입니다. 이번 블로그 포스트에서는 SnakeYAML을 사용하여 YAML 파일의 범위 (scope)를 처리하는 방법을 알아보겠습니다.
1. SnakeYAML 라이브러리 설치
먼저 SnakeYAML 라이브러리를 사용하기 위해 프로젝트에 아래의 Maven 의존성을 추가해야 합니다.
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.27</version>
</dependency>
Maven 이외의 빌드 도구를 사용하는 경우 해당 도구의 설정 파일에 SnakeYAML 라이브러리를 추가하십시오.
2. 범위 지정된 YAML 파일 작성
SnakeYAML을 사용하여 범위 지정된 YAML 파일을 작성하는 것부터 시작해 보겠습니다.
# config.yaml
default:
server:
port: 8080
domain: localhost
database:
url: jdbc:mysql://localhost:3306/sample
username: admin
password: secret
development:
server:
port: 8081
production:
server:
domain: example.com
database:
url: jdbc:mysql://production-db:3306/sample
username: prod_admin
password: prod_secret
위의 예시는 config.yaml
파일로, default
, development
, production
이라는 범위를 가지고 있습니다.
3. SnakeYAML을 사용하여 범위 지정된 YAML 파일 파싱
이제 SnakeYAML을 사용하여 config.yaml
파일을 파싱하여 범위 지정된 데이터에 액세스하는 방법을 알아보겠습니다.
import org.yaml.snakeyaml.Yaml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Map;
public class ConfigReader {
public static void main(String[] args) {
try {
Yaml yaml = new Yaml();
FileInputStream inputStream = new FileInputStream("config.yaml");
Map<String, Object> data = yaml.load(inputStream);
// default 범위
Map<String, Object> defaultConfig = (Map<String, Object>) data.get("default");
System.out.println("Server Port: " + defaultConfig.get("server.port"));
// production 범위
Map<String, Object> productionConfig = (Map<String, Object>) data.get("production");
System.out.println("Database URL: " + productionConfig.get("database.url"));
System.out.println("Username: " + productionConfig.get("database.username"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
위의 예시 코드에서는 config.yaml
파일을 읽어와 default
범위와 production
범위에 속하는 데이터에 접근합니다. SnakeYAML은 YAML 파일을 Map 형식으로 파싱하므로 캐스팅이 필요합니다.
결론
SnakeYAML을 사용하면 범위 지정된 YAML 파일의 데이터를 손쉽게 읽을 수 있습니다. 위에서 소개한 예시 코드를 기반으로 다양한 YAML 파일을 파싱하는 로직을 구현해보시기 바랍니다.
참고 자료:
- SnakeYAML GitHub 저장소: https://github.com/snakeyaml/snakeyaml
- YAML 공식 사이트: https://yaml.org/