Spring Framework - ภาพรวม
Spring เป็นเฟรมเวิร์กการพัฒนาแอปพลิเคชันยอดนิยมสำหรับ Java ระดับองค์กร นักพัฒนาหลายล้านคนทั่วโลกใช้ Spring Framework เพื่อสร้างโค้ดที่มีประสิทธิภาพสูงทดสอบได้ง่ายและใช้ซ้ำได้
Spring framework เป็นแพลตฟอร์ม Java แบบโอเพ่นซอร์ส เริ่มแรกเขียนโดย Rod Johnson และเผยแพร่ครั้งแรกภายใต้ลิขสิทธิ์ Apache 2.0 ในเดือนมิถุนายน พ.ศ. 2546
สปริงมีน้ำหนักเบาเมื่อมีขนาดและความโปร่งใส Spring framework เวอร์ชันพื้นฐานมีขนาดประมาณ 2MB
คุณสมบัติหลักของ Spring Framework สามารถใช้ในการพัฒนาแอปพลิเคชัน Java ใด ๆ แต่มีส่วนขยายสำหรับการสร้างเว็บแอปพลิเคชันที่ด้านบนของแพลตฟอร์ม Java EE Spring Framework มีเป้าหมายเพื่อให้การพัฒนา J2EE ใช้งานง่ายขึ้นและส่งเสริมแนวทางปฏิบัติในการเขียนโปรแกรมที่ดีโดยการเปิดใช้โมเดลการเขียนโปรแกรมแบบ POJO
ประโยชน์ของการใช้ Spring Framework
ต่อไปนี้เป็นรายการประโยชน์บางประการของการใช้ Spring Framework -
Spring ช่วยให้นักพัฒนาสามารถพัฒนาแอปพลิเคชันระดับองค์กรโดยใช้ POJO ประโยชน์ของการใช้ POJO เพียงอย่างเดียวคือคุณไม่จำเป็นต้องมีผลิตภัณฑ์คอนเทนเนอร์ EJB เช่นแอปพลิเคชันเซิร์ฟเวอร์ แต่คุณมีตัวเลือกในการใช้เฉพาะคอนเทนเนอร์ servlet ที่แข็งแกร่งเช่น Tomcat หรือผลิตภัณฑ์เชิงพาณิชย์บางอย่าง
ฤดูใบไม้ผลิจัดแบบแยกส่วน แม้ว่าแพ็กเกจและคลาสจะมีจำนวนมาก แต่คุณต้องกังวลเฉพาะกับแพ็กเกจที่คุณต้องการและไม่สนใจส่วนที่เหลือ
Spring ไม่ได้สร้างวงล้อขึ้นมาใหม่ แต่จะใช้ประโยชน์จากเทคโนโลยีที่มีอยู่บางอย่างเช่นเฟรมเวิร์ก ORM เฟรมเวิร์กการบันทึก JEE ควอตซ์และ JDK และเทคโนโลยีมุมมองอื่น ๆ
การทดสอบแอปพลิเคชันที่เขียนด้วย Spring นั้นทำได้ง่ายเนื่องจากมีการย้ายโค้ดที่ขึ้นกับสภาพแวดล้อมมาไว้ในกรอบ นอกจากนี้ด้วยการใช้ JavaBeanstyle POJOs มันจะง่ายกว่าที่จะใช้การฉีดพึ่งพาสำหรับการฉีดข้อมูลทดสอบ
เฟรมเวิร์กเว็บของ Spring เป็นเฟรมเวิร์ก MVC ของเว็บที่ได้รับการออกแบบมาอย่างดีซึ่งเป็นทางเลือกที่ดีสำหรับเว็บเฟรมเวิร์กเช่น Struts หรือเฟรมเวิร์กเว็บอื่น ๆ ที่ได้รับความนิยมน้อยกว่า
Spring มอบ API ที่สะดวกในการแปลข้อยกเว้นเฉพาะเทคโนโลยี (ยกตัวอย่างโดย JDBC, Hibernate หรือ JDO) ให้เป็นข้อยกเว้นที่สอดคล้องกันและไม่ได้ตรวจสอบ
ตู้คอนเทนเนอร์ IoC ที่มีน้ำหนักเบามักจะมีน้ำหนักเบาโดยเฉพาะอย่างยิ่งเมื่อเทียบกับคอนเทนเนอร์ EJB เป็นต้น สิ่งนี้เป็นประโยชน์สำหรับการพัฒนาและปรับใช้แอปพลิเคชันบนคอมพิวเตอร์ที่มีหน่วยความจำและทรัพยากร CPU จำกัด
Spring มีอินเทอร์เฟซการจัดการธุรกรรมที่สอดคล้องกันซึ่งสามารถปรับขนาดลงไปที่ธุรกรรมภายในเครื่อง (เช่นใช้ฐานข้อมูลเดียว) และปรับขนาดเป็นธุรกรรมทั่วโลก (โดยใช้ JTA เป็นต้น)
การพึ่งพาการฉีด (DI)
เทคโนโลยีที่ Spring ระบุมากที่สุดคือ Dependency Injection (DI)รสชาติของการผกผันของการควบคุม Inversion of Control (IoC)เป็นแนวคิดทั่วไปและสามารถแสดงออกได้หลายวิธี Dependency Injection เป็นเพียงตัวอย่างที่ชัดเจนของ Inversion of Control
เมื่อเขียนแอ็พพลิเคชัน Java ที่ซับซ้อนคลาสแอ็พพลิเคชันควรเป็นอิสระจากคลาส Java อื่น ๆ ให้มากที่สุดเพื่อเพิ่มความเป็นไปได้ในการนำคลาสเหล่านี้กลับมาใช้ใหม่และทดสอบโดยไม่ขึ้นกับคลาสอื่น ๆ ในขณะทดสอบยูนิต Dependency Injection ช่วยในการรวมชั้นเรียนเหล่านี้เข้าด้วยกันและในขณะเดียวกันก็ทำให้พวกเขาเป็นอิสระ
การฉีดแบบพึ่งพาคืออะไร? ลองดูสองคำนี้แยกกัน ส่วนการพึ่งพาแปลเป็นการเชื่อมโยงระหว่างสองคลาส ตัวอย่างเช่นคลาส A ขึ้นอยู่กับคลาส B ทีนี้มาดูส่วนที่สองคือการฉีด ทั้งหมดนี้หมายความว่าคลาส B จะถูกไอโอซีฉีดเข้าไปในคลาส A
การฉีดแบบพึ่งพาสามารถเกิดขึ้นได้ในวิธีการส่งผ่านพารามิเตอร์ไปยังตัวสร้างหรือโดยหลังการก่อสร้างโดยใช้วิธีเซ็ตเตอร์ เนื่องจาก Dependency Injection เป็นหัวใจสำคัญของ Spring Framework เราจะอธิบายแนวคิดนี้ในบทที่แยกต่างหากพร้อมกับตัวอย่างที่เกี่ยวข้อง
การเขียนโปรแกรมเชิงภาพ (AOP)
องค์ประกอบสำคัญอย่างหนึ่งของ Spring คือ Aspect Oriented Programming (AOP)กรอบ. เรียกฟังก์ชันที่ครอบคลุมหลายจุดของแอปพลิเคชันcross-cutting concernsและความกังวลข้ามมิติเหล่านี้เป็นแนวคิดที่แยกจากตรรกะทางธุรกิจของแอปพลิเคชัน มีตัวอย่างด้านต่างๆที่ดีเช่นการบันทึกการทำธุรกรรมที่เปิดเผยความปลอดภัยการแคช ฯลฯ
หน่วยหลักของโมดูลาร์ใน OOP คือคลาสในขณะที่ใน AOP หน่วยของโมดูลาร์คือด้าน DI ช่วยให้คุณแยกวัตถุในแอปพลิเคชันของคุณออกจากกันในขณะที่ AOP ช่วยให้คุณแยกข้อกังวลข้ามการตัดออกจากวัตถุที่ส่งผลกระทบ
โมดูล AOP ของ Spring Framework มีการใช้งานการเขียนโปรแกรมเชิงแง่มุมซึ่งช่วยให้คุณสามารถกำหนดตัวดักจับวิธีการและตัวชี้จุดเพื่อแยกโค้ดออกอย่างหมดจดซึ่งใช้ฟังก์ชันการทำงานที่ควรแยกออกจากกัน เราจะพูดคุยเพิ่มเติมเกี่ยวกับแนวคิด Spring AOP ในบทที่แยกต่างหาก