ถ้าพูดถึง Spring Framework แล้วหลายคนมันกจะเจอคำถามว่า
เฮ๊ย เอ็งทำ Spring Framework มาอ่ะ รู้จัก IOC กับ AOP มั้ยวะ หุหุ จะว่าไปผมเองก็ไม่ได้รู้อะไรมากแต่จะพยายามเล่าให้ฟังเท่าที่ผมเข้าใจ ละกันนะ
IOC ย่อมาจาก Inversion of Control หรือบางคนจะพูดถึงมันว่า dependency injection ถ้าจะให้อธิบายว่ามันคืออะไรผมก็คงจะพูดเหมือนในหนังสือหลายๆ เล่มบอกไว้น่ะแหละครับแต่ไม่รู้สิอ่านแล้วบางทีมันก็งงๆ ผมจะเล่าให้ฟังเป็น ภาษา Programmer ละกันนะครับจะได้สื่อสารกันง่ายหน่อย
เอาง่ายๆ ยกเคสเช่น คุณต้องการ Connect Database คุณไม่จำเป็นต้องไปเขียน Code ในการเปิด Connection เองเพียงแคุ่คุณบอกมาว่าต้องการใช้ตอนใหน เมื่อไหร่และอย่างไร เรา (Container) จะจัดถวายใส่พานไปให้คุณเอง คุณใช้เสร็จแล้วก็กองมันไว้ตรงนั้นแหละ เราจะทำการเก็บกวาดเช็ดถูให้คุณเองที่ยกตัวอย่างเรื่องการ Connect Database ก็เพราะอยากให้เห็นภาพ แต่จริงๆแล้วคือทุกอย่างตั้งแต่เล็กๆน้อยๆ เช่นการสร้าง Object หรือการใช้ Resource อื่นๆ ทั้งหมดทั้งปวงนั่นแหละ Container จัดการให้หมดเพียงแต่เราต้องทำการ Configuration ไว้.............เห่อๆ อ่านแล้ว งง มั้ย งั้นจบแค่นี้ก่อนละกัน สำหรับ IOC
เฮ๊ย เอ็งทำ Spring Framework มาอ่ะ รู้จัก IOC กับ AOP มั้ยวะ หุหุ จะว่าไปผมเองก็ไม่ได้รู้อะไรมากแต่จะพยายามเล่าให้ฟังเท่าที่ผมเข้าใจ ละกันนะ
IOC ย่อมาจาก Inversion of Control หรือบางคนจะพูดถึงมันว่า dependency injection ถ้าจะให้อธิบายว่ามันคืออะไรผมก็คงจะพูดเหมือนในหนังสือหลายๆ เล่มบอกไว้น่ะแหละครับแต่ไม่รู้สิอ่านแล้วบางทีมันก็งงๆ ผมจะเล่าให้ฟังเป็น ภาษา Programmer ละกันนะครับจะได้สื่อสารกันง่ายหน่อย
เอาง่ายๆ ยกเคสเช่น คุณต้องการ Connect Database คุณไม่จำเป็นต้องไปเขียน Code ในการเปิด Connection เองเพียงแคุ่คุณบอกมาว่าต้องการใช้ตอนใหน เมื่อไหร่และอย่างไร เรา (Container) จะจัดถวายใส่พานไปให้คุณเอง คุณใช้เสร็จแล้วก็กองมันไว้ตรงนั้นแหละ เราจะทำการเก็บกวาดเช็ดถูให้คุณเองที่ยกตัวอย่างเรื่องการ Connect Database ก็เพราะอยากให้เห็นภาพ แต่จริงๆแล้วคือทุกอย่างตั้งแต่เล็กๆน้อยๆ เช่นการสร้าง Object หรือการใช้ Resource อื่นๆ ทั้งหมดทั้งปวงนั่นแหละ Container จัดการให้หมดเพียงแต่เราต้องทำการ Configuration ไว้.............เห่อๆ อ่านแล้ว งง มั้ย งั้นจบแค่นี้ก่อนละกัน สำหรับ IOC
ต่อไปก็ AOP หรือ Aspect-oriented programming เจอ OOP
, OOD ,OOT,M79 แล้วไม่พอยังมาเจอ AOP อีก....อะไรจะสร้างความมึนได้ขนาดนี้สงสัยต้องหนีไปกิน
KFC ซะแล้ว 55+
ผมคนนึงที่ยังเทาๆกับคำจำกัดความของ AOP ว่ามันต่างกับ IOC ยังไงสรุปสั้นๆ ให้ได้ใจความ ก็แค่ว่า
พยายามแยก Code ใ่ส่วนของ Business กับส่วนอื่นๆ ออกจากกัน เช่น คุณเขียนโปรแกรมเกี่ยวกับ HR
ก็มุ่งเน้นเกี่ยวกับ Logic ของ HR ไปส่วนเรื่องอื่นที่เป็นส่วนประกอบไม่ว่าจะเป็น Security, การ Manage Connection Database หรือ จิปาถะให้แยกออกมาเป็น Configuration และให้ Container Manage ให้
ผมอ่านไปอ่านมาดูๆ แล้วมันก็ คือๆ กัน แต่ก็พยายามคิดไปเองว่ามัน AOP คือ Concept ส่วน IOC คือวิธีการของ Spring ที่จะทำให้ได้ตาม Concept AOP ผมคิดว่างั้นนะ แต่พอดูๆไปล้วพอพูดถึง AOP แล้วมันจะยก เรื่องของ Interceptors ขึ้นมาอืมห์ๆๆ แล้วมันยังไง???
ผมคนนึงที่ยังเทาๆกับคำจำกัดความของ AOP ว่ามันต่างกับ IOC ยังไงสรุปสั้นๆ ให้ได้ใจความ ก็แค่ว่า
พยายามแยก Code ใ่ส่วนของ Business กับส่วนอื่นๆ ออกจากกัน เช่น คุณเขียนโปรแกรมเกี่ยวกับ HR
ก็มุ่งเน้นเกี่ยวกับ Logic ของ HR ไปส่วนเรื่องอื่นที่เป็นส่วนประกอบไม่ว่าจะเป็น Security, การ Manage Connection Database หรือ จิปาถะให้แยกออกมาเป็น Configuration และให้ Container Manage ให้
ผมอ่านไปอ่านมาดูๆ แล้วมันก็ คือๆ กัน แต่ก็พยายามคิดไปเองว่ามัน AOP คือ Concept ส่วน IOC คือวิธีการของ Spring ที่จะทำให้ได้ตาม Concept AOP ผมคิดว่างั้นนะ แต่พอดูๆไปล้วพอพูดถึง AOP แล้วมันจะยก เรื่องของ Interceptors ขึ้นมาอืมห์ๆๆ แล้วมันยังไง???
Spring framework ถูกพัฒนาโดย
Rod Johnson และเผยแพร่ผ่านเว็ปไซต์ http://www.springframework.org
หลังจากนั้นก็มีกลุ่มนักพัฒนาเข้ามาช่วยพัฒนาและตั้งเป็นกลุ่ม community หลักที่ http://www.springsource.org
ความสามารถหลักๆ ของ Spring ที่เด่นๆมีดังนี้
+ สามารถเชื่อต่อกับ framework อื่นๆได้ง่ายผ่านการ configuration
+ สนับสนุนการทำ IoC และ DI (Dependency Injection) คือการฉีด Bean เข้าไปในส่วนต่างๆ เช่น หน้า View, Controller และ class อื่นๆ
+ รองรับการทำงานครบทั้ง 3 Layer ตาม M-V-C Design Pattern
+ รองรับทั้ง .NET แนะ Java
+ รองรับการทำ AOP (Aspect Oriented Programming)
+ สามารถทำ UnitTest แยกส่วนได้เลยโดยใช้ jUnit
+ รองรับการทำส่วนแสดงผลด้วย SpringMVC หรือสามารถใช้ framework อื่นได้ เช่น JSP,JSF, Struts,Jasper, iReport
+ รองรับการทำ WorkFlow
+ รองรับการทำ Web Security
+ เชื่อมต่อกับระบบอื่นด้วย WebService, JMS, Email ได้โดยเขียนแค่ไม่กี่บรรทัด
+ รองรับการทำ Scheduling สำหรับใครที่ต้องการทำระบบนัดหมาย หรือตั้งเวลาโปรแกรม
+ รองรับการเขียนแบบ Portlet
ขอขยายความ Portlet คือแอพลิเคชั่นอะไรก็ได้ครับ ที่เราเขียนๆกันอยูาในรูปแบบของ Web นะละ ครับ จะ JSP, Servlet อะไรก็ได้ละครับ แต่มันจะมี Portlet Standard Framework คุมอีกที จะต่อ Database, XML หรือ Interface อื่นๆมาซั่มเป็นเนื้อหาก็ตามแล้วแต่ความต้องการแล้วละครับ
+ สามารถเชื่อมต่อกับฐานข้อมูลแบบ O/R mapping โดยเลือกใช้ Hibernate, iBatis, JPA และค่ายอื่นๆ
หลังจากนั้นก็มีกลุ่มนักพัฒนาเข้ามาช่วยพัฒนาและตั้งเป็นกลุ่ม community หลักที่ http://www.springsource.org
ความสามารถหลักๆ ของ Spring ที่เด่นๆมีดังนี้
+ สามารถเชื่อต่อกับ framework อื่นๆได้ง่ายผ่านการ configuration
+ สนับสนุนการทำ IoC และ DI (Dependency Injection) คือการฉีด Bean เข้าไปในส่วนต่างๆ เช่น หน้า View, Controller และ class อื่นๆ
+ รองรับการทำงานครบทั้ง 3 Layer ตาม M-V-C Design Pattern
+ รองรับทั้ง .NET แนะ Java
+ รองรับการทำ AOP (Aspect Oriented Programming)
+ สามารถทำ UnitTest แยกส่วนได้เลยโดยใช้ jUnit
+ รองรับการทำส่วนแสดงผลด้วย SpringMVC หรือสามารถใช้ framework อื่นได้ เช่น JSP,JSF, Struts,Jasper, iReport
+ รองรับการทำ WorkFlow
+ รองรับการทำ Web Security
+ เชื่อมต่อกับระบบอื่นด้วย WebService, JMS, Email ได้โดยเขียนแค่ไม่กี่บรรทัด
+ รองรับการทำ Scheduling สำหรับใครที่ต้องการทำระบบนัดหมาย หรือตั้งเวลาโปรแกรม
+ รองรับการเขียนแบบ Portlet
ขอขยายความ Portlet คือแอพลิเคชั่นอะไรก็ได้ครับ ที่เราเขียนๆกันอยูาในรูปแบบของ Web นะละ ครับ จะ JSP, Servlet อะไรก็ได้ละครับ แต่มันจะมี Portlet Standard Framework คุมอีกที จะต่อ Database, XML หรือ Interface อื่นๆมาซั่มเป็นเนื้อหาก็ตามแล้วแต่ความต้องการแล้วละครับ
+ สามารถเชื่อมต่อกับฐานข้อมูลแบบ O/R mapping โดยเลือกใช้ Hibernate, iBatis, JPA และค่ายอื่นๆ
ถ้าต้องการเริ่มต้นกับ spring ต้องทำอย่างไรบ้าง?
1. Download ตัว springframework จาก website ด้านบน
2. เริ่มศึกษาจาก tutorial
3. เริ่มใช้งานส่วนของ DAO, O/R Mapping ก่อน
4. ฝึก config และทำความเข้าใจกับหลักการของ Dependency Injection (อันนี้สำคัญ)
5. ฝึกเขียนให้ครบ MVC โดยอาจจะใช้ View เป็น JSP, Controller เป็นของ Spring, Model ใช้เป็น Hibernate
6. ทดลองสร้าง Web Application ง่ายๆ เช่นส่วนของการเก็บประวัติลูกค้า, ระบบสมาชิก
8. ทดลองนำ Framework อื่นมาประยุกต์ใช้ ต่อยอด
1. Download ตัว springframework จาก website ด้านบน
2. เริ่มศึกษาจาก tutorial
3. เริ่มใช้งานส่วนของ DAO, O/R Mapping ก่อน
4. ฝึก config และทำความเข้าใจกับหลักการของ Dependency Injection (อันนี้สำคัญ)
5. ฝึกเขียนให้ครบ MVC โดยอาจจะใช้ View เป็น JSP, Controller เป็นของ Spring, Model ใช้เป็น Hibernate
6. ทดลองสร้าง Web Application ง่ายๆ เช่นส่วนของการเก็บประวัติลูกค้า, ระบบสมาชิก
8. ทดลองนำ Framework อื่นมาประยุกต์ใช้ ต่อยอด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น