
หลังจากที่ทำการแบ่งปันความรู้เรื่อง การพัฒนา REST API ด้วย Java และ Spring Boot 4
ระยะเวลา 3 วัน
ซึ่งส่วนใหญ่จะใช้งาน Java 17 และ 21 กันหมดแล้ว
โดยในครั้งนี้ ทำการแนะนำให้รู้จักความรู้พื้นฐานต่าง ๆ ที่น่าสนใจ
ประกอบไปด้วย
- Feature ใหม่ ๆ ที่น่าสนใจของภาษา Java (Modern Java)
- Feature ใหม่ ๆ กับปัญหาที่ตัวภาษาพยายามแก้ไข
- ลงมือพัฒนาระบบ REST API ด้วย Spring Boot 4 รวมถึงการทดสอบ และ observability(log, metric, trace)
- ทำ performance testing เล็ก ๆ เพื่อดูว่าก่อนและหลังการเปลี่ยนแปลง เป็นอย่างไร ไม่ใช่การเดาหรือคิดไปเอง
รายละเอียดคร่าว ๆ เป็นดังนี้
เรื่องแรก feature ใหม่ ๆ ที่น่าสนใจ สำหรับการพัฒนา
โดยทั่วไปจะทำการ upgrade JDK เป็นตัวใหม่ ๆ
แต่ syntax หรือการเขียน code ยังใช้แนวคิดของ version เก่า ๆ อยู่ !!
จึงแนะนำให้รู้จัก feature ที่น่าสนใจ เช่น
- Sealed class/interface สำหรับกำหนดไปเลยว่า child class หรือ implement class มีอะไรได้บ้าง
- Optional และ ใน Spring Boot 4 มี jSpecify มาช่วยจัดการเรื่องขอ Null Safety
- การใช้งาน Generic ในการออกแบบส่วนงานต่าง ๆ
- Minimal main class (ง่ายต่อการเรียนรู้)
- การใช้งาน Stream API และ Lambda expression
- Try-with-resources สำหรับการจัดการ resource ต่าง ๆ ให้ปลอดภัยมาขึ้น ในเรื่องของ leak ต่าง ๆ
- Virtual thread ใน Java 21 ที่เอามาใช้ร่วมกับ Spring Boot 3, 4 ซึ่งเหมาะกับงานที่เป็น I/O bound task เช่น การเชื่อมต่อ database, การเรียก service ผ่าน HTTP protocol หรือใช้งานกับ messaging เช่น Apache Kafka เป็นต้น
เรื่องที่สอง แนะนำเรื่องของ Design pattern ที่ใช้งานใน Spring Framework และ Spring Boot
เป็นเรื่องพื้นฐานอย่างหนึ่ง เราควรต้องรู้และเข้าใจบ้างว่า
สิ่งที่เรานำมาใช้ มันมีแนวคิด หรือ design pattern อะไรที่ถูกนำมาใช้งาน
พร้อมกับปัญหาที่แก้ไขด้วย
เช่นทุกครั้งที่ start server จะทำการสร้าง context ขึ้นมา
โดยใน context จะมี bean ต่าง ๆ ที่ถูกสร้างขึ้นมาแบบอัตโนมัติ
จากนั้นเราก็สามารถนำมาใช้งานได้เลย เช่น getBean() หรือ @AutoWired เป็นต้น
โดยในส่วนนี้ จะมีปนวคิดที่ใช้งาน
- Factory method
- Dependency Injection ซึ่งมาจากแนวคิด Dependency Inversion Principle ใน S.O.L.I.D เป็นต้น
และ bean ต่าง ๆ ที่ถูกสร้างขึ้นมานั้น ( Singleton scope)
จะถูกเก็บไว้ใน memory ดังนั้น ถ้าจำนวน bean เยอะ ๆ น่าจะใช้ memory หรือไม่ ?
ในส่วนนี้ก็น่าสนใจ
ทำความรู้จักกับ Spring AOP ซึ่งเป็นสิ่งที่ Spring Framework ใช้งานเยอะมาก ๆ
แต่กลับมีคนรู้จักน้อยมาก ๆ
จึงทำการแนะนำ และ use case การนำมาใช้งาน
ช่วยแก้ไขปัญหาต่าง ๆ รวมทั้งยังสนับสนุนแนวคิด OCP (Open-Closed Principle) อีกด้วย
เรื่องที่สาม ความรู้พื้นฐานของพัฒนาพัฒนาระบบด้วย Spring Boot 4
แนะนำสิ่งที่ควรต้องรู้ และ ตกลงกันให้ดี ๆ ก่อนเริ่มทำงาน เช่น

- Project structure ของระบบงานว่าเป็นแบบไหน flow การทำงานเป็นอย่างไร
- ในแต่ละ layer มีหน้าที่รับผิดชอบอะไรบ้าง
- ทำข้อตกลงแล้ว ลองทำการตรวจสอบด้วย ArchUnit เพื่อใช้ตรวจว่าทำตามหรือไม่
- เพิ่ม Spring Modulith เพื่อตรวจสอบเรื่องของการ reference ต่าง ๆ เป็น cyclic หรือไม่ รวมทั้งสร้าง module diagram ของระบบให้ รวมทั้งยังมีตัวช่วยในการติดต่อสื่อสารระหว่าง module ในรูปแบบ event-based ให้อีกด้วย
- ในส่วนของ service จะทำหน้าที่ในการจัดการ transaction ดังนั้นสิ่งที่ควรต้องรู้คือ เรื่องของ transaction propagation และ isolation level เพื่อให้จัดการตามความต้องการ และไม่เกิดปัญหาที่ไม่คาดฝันขึ้นมา เช่นข้อมูลหาย หรือ database locked เป็นต้น
- เมื่อพัฒนาเรียบร้อยในแต่ละ feature แล้ว ควรทำการเขียน test ไปด้วยเสมอ เช่น Spring Boot Test กับ Test containers เป็นต้น จะช่วยให้การทำ integration test ง่ายขึ้น
- เรื่องของ Observability ทั้ง structured log, application metric และ distributed tracing ด้วย Actuator + Prometheus และ OpenTelemetry
- การใช้งาน Virtual Thread กับ Spring Boot 4 โดยทำการ load test ทั้งก่อนและหลังการเปลี่ยนแปลง เพื่อดูการใช้งาน resource ต่าง ๆ ทั้ง memory และ จำนวน thread ที่สร้างขึ้นมา ว่าเป็นอย่างไรบ้าง
- สิ่งที่น่าสนใจอีกตัวคือ Resilience pattern ใน Spring Framework 7
ปิดท้ายด้วยการนำความรู้ต่าง ๆ มาเขียนเป็น Agent + Skills
สำหรับใช้ AI Agent มาช่วยเราทำงานต่อไป
AI draft, Human craft ต่อไป
ทั้งหมดนี้เป็นความรู้พื้นฐานต่าง ๆ
ที่สำคัญต่อการพัฒนาระบบงานให้ดีขึ้น