☕ 5-Min Tech Story #02

นรก XML 500 บรรทัด สู่เวทมนตร์บรรทัดเดียวของ Spring Boot ที่เด็กยุคนี้ไม่มีวันเข้าใจ

⏱️ ใช้เวลาอ่านประมาณ: 4 นาที

ถ้าคุณเริ่มเขียน Java ในยุคนี้ คุณคงชินกับการเข้าเว็บ start.spring.io ติ๊กเลือกของ กด Download แตก Zip แล้วสั่ง Run ภายในเวลาไม่ถึง 20 วินาที... "Hello World" ก็ขึ้นจอแล้ว

แต่ถ้าย้อนกลับไปสัก 15 ปีก่อน... คุณอาจต้องใช้เวลา 3 วันเต็มๆ แค่จะทำให้ Server บูตติดโดยไม่พ่น Error หน้าตาประหลาดออกมา

🔥 ยุคมืด: XML Hell และ Tomcat ที่พร้อมระเบิด

ในยุค Java Enterprise (J2EE) หรือแม้แต่ Spring ยุคแรกๆ มันมีคำแสลงที่ฝังใจ Dev ยุคนั้นมากคือคำว่า "XML Hell" (นรก XML)

อยากต่อ Database เหรอ? เขียน XML 40 บรรทัด
อยากลงทะเบียน Controller 1 ตัว? เขียน XML เพิ่มอีก 20 บรรทัด
อยากบอกว่าคลาส A ต้องฉีดเข้าไปในคลาส B? ไปแปะ Bean Tag ใน XML อีกหน้านึง

สิ่งที่เลวร้ายที่สุดคือ XML พวกนี้ ไม่มี Type Checking ถ้าคุณพิมพ์ชื่อคลาสผิดแม้แต่ตัวสะกดเดียว คอมไพเลอร์จะไม่เตือนอะไรเลย จนกระทั่งคุณ Build ไฟล์ .war ขนาด 80MB โยนขึ้น Apache Tomcat แล้วรอลุ้น 5 นาที... ปรากฏว่าพังเพราะสะกดชื่อ Bean ตกตัวอักษร 's' ไปตัวเดียว

🪄 กำเนิด Spring Boot: คอนเซปต์ "ช่างเดาหัวหมอ"

จนกระทั่งปี 2014 ทีมงาน Spring ทนเสียงก่นด่าไม่ไหว เลยปล่อย Spring Boot ออกมาพร้อมปรัชญาใหม่สุดโต่งที่เรียกว่า:

"Opinionated Defaults (ข้าคิดมาให้หมดแล้ว แกแค่ใช้ไปเหอะ)"

เบื้องหลังเวทมนตร์นี้ อยู่ใต้ Annotation ตัวเดียวที่คุณแปะไว้บนหัวฟังก์ชัน main:

@SpringBootApplication
fun main(args: Array<String>) {
  runApplication<MyApplication>(*args)
}

ข้างใน Annotation นี้มีกลไกอัจฉริยะที่ชื่อว่า @EnableAutoConfiguration มันทำงานเหมือน นักสืบ ทันทีที่สตาร์ตแอป:

จากระบบที่ต้องคอนฟิกด้วยมือเป็นร้อยบรรทัด กลายเป็นระบบที่มองเห็น Dependency แล้ว "เดาใจ" จัดการให้ครบหมดทุกอย่างในพริบตาเดียว

💡 5-Min Takeaway

เทคโนโลยีที่ดี ไม่ใช่เทคโนโลยีที่ทำให้เราเขียนโค้ดยากขึ้นเพื่อโชว์เหนือ แต่คือเทคโนโลยีที่ เปลี่ยนเรื่องซ้ำซากที่น่ารำคาญ ให้กลายเป็นเรื่องอัตโนมัติ (Convention over Configuration) เพื่อให้เราเอาพลังสมองไปโฟกัสกับ Business Logic จริงๆ ของระบบ