แปลง YAML เป็น Properties: คู่มือจัดการ Spring Boot Config ฉบับสมบูรณ์
วิธีแปลงไฟล์ YAML config เป็น Java .properties key=value และย้อนกลับ รองรับ nested keys, arrays และ escape sequences ฟรี ทำงานใน browser
Table of Contents
นักพัฒนา Java ทุกคนเคยเจองานน่าเบื่อเดียวกัน — คุณมี application.yml ที่อ่านง่ายเป๊ะ แต่ legacy service, CI pipeline หรือทีม ops กลับต้องการ application.properties การนั่งแปลง YAML tree ที่ซ้อนกันลึก ๆ ให้เป็น key=value แบบ flat ด้วยมือเปล่านอกจากช้าและผิดพลาดง่ายแล้ว ยังทรมานมาก — เพียง indent ผิดไปหนึ่งระดับ Spring Boot ก็อ่านค่าผิดเงียบ ๆ โดยไม่มี error บอกเลย
YAML to Properties Converter ทำให้งานนี้จบในสองวินาที วาง YAML ของคุณ รับ output .properties ที่ flatten เรียบร้อย หรือรันกลับด้านเพื่อเปลี่ยน properties file ให้กลับเป็น YAML ที่ indent สวยงาม ทุกอย่างทำงานใน browser ของคุณล้วน ๆ — ไม่มีการ upload ไม่ต้องสมัครสมาชิก ไม่มีข้อมูลออกจากเครื่องคุณ
ในคู่มือนี้ เราจะพาไปดูว่าเครื่องมือทำอะไรได้บ้าง หลักการ YAML flattening ทำงานจริง ๆ ยังไง และสถานการณ์จริงที่การแปลงนี้ช่วยชีวิตคุณไว้ได้
ทำไมต้องใช้ YAML to Properties Converter
- แปลงสองทางจริง ๆ (bidirectional) — เครื่องมือส่วนใหญ่แปลงได้ทางเดียว ตัวนี้มี 2 modes แยกกันชัดเจน: YAML → .properties และ .properties → YAML ย้ายระบบได้ทิศทางไหนก็ได้ตามที่ project ต้องการ
- จัดการ nesting อย่างถูกต้อง — key ที่ซ้อนลึกอย่าง spring.datasource.url ถูก flatten เป็น dotted path อัตโนมัติ ตรงกับวิธีที่ Spring Boot resolve ค่าจริง ๆ
- Array กลายเป็น indexed keys — list ใน YAML ถูกแปลงเป็นรูปแบบ key[0], key[1] ซึ่งเป็น format ที่ Java property loaders และ Spring relaxed binding อ่านออก
- รองรับ escape sequences ครบ — unicode escapes (\uXXXX), line continuation ด้วย trailing backslash และ comment #/! ในไฟล์ .properties ถูก parse ถูกต้องจริง ๆ ไม่ใช่แค่ "ข้ามไปได้"
- เป็นส่วนตัว 100% และใช้ offline ได้ — การแปลงเกิดขึ้น client-side ใน browser config ของคุณ (ที่มักมี database URL, secret และ internal hostname) ไม่เคยส่งขึ้น server เลย
- ไร้ friction — ไม่ต้อง sign-up ไม่มี rate limit ไม่มี "อัปเกรดเพื่อแปลงไฟล์ใหญ่กว่านี้" วาง แปลง copy หรือ download จบ
ฟีเจอร์เด่น
| ฟีเจอร์ | ทำอะไร |
|---|---|
| แปลงสองทาง | Tabs แยกสำหรับ YAML → .properties และ .properties → YAML |
| Flatten nested keys | server.port, spring.datasource.url — สร้าง dotted path อัตโนมัติ |
| Bracket-escaped keys | key ที่มีจุด (.) ข้างในจะถูก wrap เป็น [my.key] เพื่อ round-trip ได้แบบ lossless |
| Array indexing | list ใน YAML กลายเป็น logging.level[0]=INFO, logging.level[1]=WARN |
| Properties parsing | รองรับ comment (#, !), logical line continuation และ unicode escapes |
| Copy & download | คลิกเดียว copy ไป clipboard หรือ save เป็น config.properties / config.yaml |
มีรายละเอียดที่อยากเน้นสองจุด จุดแรกคือเรื่อง bracket-escaping ซึ่ง subtle แต่สำคัญมาก: ถ้า YAML ของคุณมี key ที่มีจุด (.) ข้างในจริง ๆ (เช่น my.setting: v) flattener ที่ไร้เดียงสาจะแยกเป็น my → setting ทันที — ผิดเลย เครื่องมือนี้ wrap key แบบนั้นเป็น [my.setting] เพื่อให้ตอนแปลงกลับเป็น YAML ได้ key เดิมเป๊ะ ๆ การแปลงจึง round-trip safe
จุดที่สอง — parser ของ .properties รองรีสเป็น spec-aware ไม่ใช่แค่อ่านทีละบรรทัด มันเข้าใจว่า trailing backslash หมายถึง logical line ยังต่ออยู่บรรทัดถัดไป และ \u0041 แปลว่า A — ตรงกับพฤติกรรมของ java.util.Properties.load() ทุกประการ
วิธีใช้งาน
- เปิด YAML to Properties Converter
- เลือกทิศทางด้วย mode tabs ด้านบน — "YAML → Properties" หรือ "Properties → YAML"
- วาง config ของคุณลงใน editor ฝั่งซ้าย ถ้าเป็นโหมด YAML ก็คือ application.yml ของคุณ ถ้าเป็นโหมดย้อนกลับก็คือไฟล์ .properties
- output ที่แปลงแล้วโผล่ทางขวาทันที — ไม่ต้องหาปุ่ม "Convert" ที่ไหน
- กด Copy เพื่อหยิบผลลัพธ์ หรือกด Download เพื่อ save เป็น config.properties หรือ config.yaml ได้เลย
ถ้า input มี syntax error (indent เพี้ยน, escape เสีย) เครื่องมือจะเตือนทันที แทนที่จะปล่อย output ผิด ๆ ออกมาเงียบ ๆ
หลักการทำงานของ YAML Flattening
การเข้าใจกลไกช่วยให้คุณไว้ใจ output ได้ ลองดู snippet ของ Spring Boot ที่พบบ่อย:
server:
port: 8080
host: localhost
spring:
datasource:
url: jdbc:mysql://localhost:3306/app
logging:
level:
- INFO
- WARN
ตัวแปลงเดิน tree แบบ depth-first ทุกระดับการซ้อนเพิ่ม segment . หนึ่งชิ้นเข้าไปใน key path และทุก item ใน list กลายเป็น suffix [index]:
server.port=8080 server.host=localhost spring.datasource.url=jdbc:mysql://localhost:3306/app logging.level[0]=INFO logging.level[1]=WARN
มี 3 กติกาที่ทำให้กระบวนการนี้ robust:
- Dotted paths สะท้อนวิธี resolve ของ Spring — spring.datasource.url ใน .properties resolve ไปที่ binding เดียวกับ nested YAML ด้านบน ทั้งสอง format จึงเทียบเท่ากันเชิงความหมาย (semantically equivalent) ใน Spring Boot
- จุด (.) ที่เป็นส่วนหนึ่งของ key จะถูก bracket-escape — key my.key ใน YAML กลายเป็น [my.key] ใน path เพื่อให้ตัว unflattener รู้ว่าเป็น key เดียว ไม่ใช่สอง key นี่คือสิ่งที่ทำให้ round-trip เป็น lossless
- ความแปลกของ .properties ถูกเคารพตอนย้อนกลับ — ตัวแปลง reverse รวม continuation lines (trailing \), ตัด comment # และ ! และ decode \uXXXX unicode escapes ก่อนประกอบ YAML tree กลับ — ทำตัวเหมือน java.util.Properties เป๊ะ ๆ
Use cases ในทางปฏิบัติ
ย้าย Spring Boot app ระหว่างสอง format
ทีมส่วนใหญ่ standardize ไว้หนึ่ง format — จนกระทั่งเกิด M&A, platform migration หรือเปลี่ยน team lead ใหม่ การย้าย application.yml สองร้อยบรรทัดไปเป็น .properties (หรือกลับกัน) ด้วยมือคือการเชื้อเชิญ typo เข้ามาใน key ที่สำคัญที่สุด: timeout, credential, feature flag วางแล้วแปลง — ตัดความเสี่ยงนี้ทิ้งหมด
Override config ตาม environment
CI/CD pipeline จำนวนมาก override key รายตัวผ่าน environment variable หรือ command-line property (-Dspring.datasource.url=...) จะรู้ว่าชื่อ property ไหน map กับ path ไหนใน YAML คุณต้องเห็นมันในรูปแบบ flattened แปลงครั้งเดียว แล้วคุณจะมีรายการ overridable keys ที่เป็นทางการครบถ้วน
ทำงานกับ legacy Java applications
ระบบ Java เก่า — batch job, internal tool, library ที่เก่ากว่า Spring — มักอ่านไฟล์ .properties เท่านั้น ถ้า source of truth ของคุณเป็น YAML เครื่องมือนี้ก็เชื่อมสองโลกเข้าด้วยกันได้ โดยไม่ต้องมี build step หรือ conversion script หลบอยู่ใน repo
Diff และ review config
ไฟล์ flat key=value diff ได้สะอาด line-by-line ขณะที่ diff ของ YAML มัก noise มากเวลา indent เลื่อน การแปลงเป็น properties ก่อน code review หรือ config audit ทำให้เห็นการเปลี่ยนแปลงจริง และเห็นเฉพาะการเปลี่ยนแปลง ชัดเจนสูง
แนวทางปฏิบัติที่ดี
- เลือก format หลัก (canonical) หนึ่งอย่างต่อ project และถือว่าอีกอย่างเป็น output ที่ generate ขึ้น การแปลงไปมาทั้งสองทางตลอดเวลาคือสูตรของ config drift
- commit ไฟล์ที่แปลงแล้วควบคู่กับต้นฉบับ ระหว่างช่วง migration เมื่อ CI เขียวแล้วค่อยลบของเก่าทิ้ง
- อย่า scatter secret ไปหลายที่เกินจำเป็น — สำเนา credential ทุกชุดคืออีกหนึ่งสิ่งที่ต้อง rotate ตามไปด้วย
- ตรวจค่าที่ escape หนัก (path ของ Windows, regex, ค่าที่มี = หรือ :) หลังแปลงเสมอ — round-trip กลับไป YAML เป็น sanity check ที่ดีมาก
- รักษาความสม่ำเสมอของ array — ถ้าต้องการรักษาลำดับ ใช้ indexed keys (list[0], list[1]) ดีกว่า split ด้วย comma
- ใช้ comment ใน output .properties แบบประหยัด — comment ไม่ survive การ round-trip ผ่าน YAML เพราะ comment ไม่ได้เป็นส่วนหนึ่งของ data model
เริ่มแปลง YAML Config ของคุณเลย
เลิกนั่ง flatten YAML มือเปล่าตอน ทุ่มสิบเอ็ดก่อน release กันเถอะ YAML to Properties Converter ฟรี ทันที และเก็บ config ของคุณไว้บนเครื่องคุณล้วน ๆ วาง application.yml แล้วรับไฟล์ .properties ที่พร้อม deploy ในไม่กี่วินาที
เครื่องมือที่เกี่ยวข้อง
ขอให้ config สวยงาม!