BackEnd/Spring

[Spring] YAML 이란? (Feat. JSON, XML)

ryuneng 2025. 1. 17. 12:22
반응형

📍 YAML 이란?

  • 데이터 직렬화 언어
  • 설정파일(구성파일) 작성에 자주 사용
  • 쉽게 읽고 이해할 수 있도록 설계됨

데이터 직렬화 란?

  • 객체를 네트워크 통신에 사용하기 적합한 형식으로 변환하는 것.
  • 읽고 작성하기 쉬운 텍스트 형식과 컴퓨터가 쉽게 처리할 수 있는 이진형식으로 데이터를 변환하는 것
  • 텍스트 기반 데이터 형식
    • CSV
    • JSON
    • XML
    • YAML (데이터 직렬화가 가능하긴 하지만, 주로 설정파일 작성을 위해서 개발됨)




📌 XML, JSON, YAML로 데이터 표현하기

1. XML로 설정정보 표현하기

  • 태그를 사용해서 데이터 표현
  • key : 태그이름 / value : 태그의 컨텐츠(값)
  • 태그 안에 태그를 포함시켜서 부모-자식 관계를 나타냄
<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <apiVersion>v1</apiVersion>
    <kind>Pod</kind>
    <metadata>
        <name>hello-pod</name>
        <labels>
            <app>hello</app>
        </labels>
    </metadata>
    <spec>
        <containers>
            <name>hello-container</name>
            <image>sample/hello</image>
        </containers>
    </spec>
</root>

2. JSON으로 설정정보 표현하기

  • XML에 비해 단순
  • JSON은 객체 표현법과 배열 표현법을 제공하기 때문에
    key-value 쌍의 데이터는 객체 표현법으로 작성하고,
    value, value, value 값의 목록은 배열 표현법으로 구분해서 작성할 수 있음
  • XML
{
      "apiVersion": "v1",
      "kind": "Pod",
      "metadata": {
              "name": "hello-pod",
              "labels": [
                          {"app": "hello"},
                ]
      },
      "spec": {
              "containers": [
                          {
                              "name": "hello-container",
                              "image": "sample/hello"
                          }
                ]
      }
}

3. YAML로 설정정보 표현하기

  • XML이나 JSON에 비해서 더 단순하고, 가독성이 높음
  • 2칸 들여쓰기를 이용해서 부모-자식 관계를 표현 tab 사용 불가
  • "-"를 사용해서 배열임을 나타냄
  • 콜론 뒤에는 반드시 공백 하나가 있어야 함
apiVersion: v1
kind: Pod
metadata:
  name: hello-pod
  labels:
    app: hello
spec:
  containers:
  - name: hello-container
    image: sample/hello




💡 참고

  • resources는 자동으로 인식해서 webapp 밑에 resources 폴더를 만들면 따로 설정하지 않아도 되지만,
    resources 폴더를 만들지 않을 경우 따로 설정을 해줘야 함

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/Spring-YAML-JSON-XML