[Java] Spring Framework กับความสามารถ Dependency Injection
"Spring" ประกอบด้วย Spring Projects มากมายให้เราได้เลือกใช้งาน ซึ่งการที่จะพูดว่า "ใช้ Spring" คงจะแคบเกินไปแล้ว ซึ่งในส่วนของโพสนี้ก็จะเล่าถึง Spring Framework ที่เกี่ยวข้องในการทำ Web Application แบบง่ายๆ กันครับ
เราสามารถเริ่มต้น Web Application Project ที่ใช้ Spring Boot ได้ง่ายๆ ถ้ายังไม่รู้จักแนะนำให้ไปทำความรู้จักกันก่อนครับ >> รู้จัก Spring Boot ฉบับมือใหม่
Spring Bean คือ class ที่ถูกเพิ่มความสามารถเข้าไป โดยมีคุณสมบัติรองรับ DI ซึ่งมีวิธีที่จะได้มาซึ่งความสามารถนี้มี 3 วิธี คือ
โปรเจคตัวอย่าง ประกอบด้วยการใช้งานสร้าง project web services ง่ายๆ ด้วย Spring Boot
https://github.com/lordgift/SpringBoot2Tutorial.git
จะเห็นว่า Spring ประกอบด้วยรายละเอียดปลีกย่อยอีกมากมาย โพสนี้เป็นแค่ส่วนเล็กๆ ไม่กี่ส่วนที่ถูกยกมาสร้าง REST web service เท่านั้น แต่ก็ไม่ได้หมายความว่าใช้ Spring 100% แล้วจะดี เพราะฉะนั้นเลือกหยิบใช้ตามความเหมาะสมนะครับ
เราสามารถเริ่มต้น Web Application Project ที่ใช้ Spring Boot ได้ง่ายๆ ถ้ายังไม่รู้จักแนะนำให้ไปทำความรู้จักกันก่อนครับ >> รู้จัก Spring Boot ฉบับมือใหม่
Dependency Injection
สิ่งที่ยิ่งใหญ่ที่สุดของ Spring คือเรื่องความสามารถในการทำ dependency injection (DI) ซึ่ง DI นี้เองที่จะสามารถเชื่อมโยง spring framework ต่างๆ เข้าด้วยกัน และมีประโยชน์อย่างมากในการออกแบบ architecture ของ project@AutowiredAutowired เป็น annotation ที่ทำให้เราสามารถ 'Inject' object ขึ้นมาใช้งานได้ โดย object ดังกล่าวจะต้องถูกประกาศไว้ก่อนหน้า และเป็น object ที่มีความเป็น Spring หรือมีชื่ออย่างเป็นทางการว่า "Spring Bean"
Spring Bean คือ class ที่ถูกเพิ่มความสามารถเข้าไป โดยมีคุณสมบัติรองรับ DI ซึ่งมีวิธีที่จะได้มาซึ่งความสามารถนี้มี 3 วิธี คือ
- เขียนใน beans.xml
- ใช้ Class Annotation : @Configuration ร่วมกับ Method Annotation : @Bean
- ใช้ Class Annotation : @Component
@Controller
- เป็นชั้นของหน้าบ้าน (Presentation Layer) เช่น Spring MVC ที่เล่นกับหน้าจอ หรือรับส่งค่าผ่าน Web Service@Service
- เป็นชั้นของ Business (Business Layer) ที่ทำงานเรื่องของ logic ต่างๆ อาจทำ Transaction management ที่ชั้นนี้@Repository
- เป็นชั้นของ Persistence หรือบางคนก็เรียก DAO (Persistence Layer) ซึ่งทำหน้าที่เชื่อมต่อกับ database เช่น การใช้งาน Hibernate
โปรเจคตัวอย่าง ประกอบด้วยการใช้งานสร้าง project web services ง่ายๆ ด้วย Spring Boot
https://github.com/lordgift/SpringBoot2Tutorial.git
จะเห็นว่า Spring ประกอบด้วยรายละเอียดปลีกย่อยอีกมากมาย โพสนี้เป็นแค่ส่วนเล็กๆ ไม่กี่ส่วนที่ถูกยกมาสร้าง REST web service เท่านั้น แต่ก็ไม่ได้หมายความว่าใช้ Spring 100% แล้วจะดี เพราะฉะนั้นเลือกหยิบใช้ตามความเหมาะสมนะครับ