คุณอาจต้องการรวม Spring ไว้ในรายการกรอบงาน Dependency Injection ที่คุณกำลังพิจารณา คำตอบสำหรับคำถามของคุณมีดังนี้
การเชื่อมต่อกับกรอบ
Pico - Pico มีแนวโน้มที่จะกีดกันการฉีด setter แต่นอกเหนือจากนั้นชั้นเรียนของคุณไม่จำเป็นต้องรู้เกี่ยวกับ Pico เป็นเพียงการเดินสายที่จำเป็นต้องรู้ (จริงสำหรับเฟรมเวิร์ก DI ทั้งหมด)
Guice - Guice รองรับคำอธิบายประกอบJSR 330มาตรฐานแล้วดังนั้นคุณไม่จำเป็นต้องมีคำอธิบายประกอบเฉพาะของ Guice ในโค้ดของคุณอีกต่อไป Spring ยังรองรับคำอธิบายประกอบมาตรฐานเหล่านี้ ข้อโต้แย้งที่ Guice ใช้คือการที่ไม่มีตัวประมวลผลคำอธิบายประกอบ Guice ทำงานอยู่สิ่งเหล่านี้ไม่ควรมีผลกระทบหากคุณตัดสินใจใช้กรอบงานอื่น
Spring - Spring มีจุดมุ่งหมายเพื่อให้คุณหลีกเลี่ยงการกล่าวถึง Spring framework ในโค้ดของคุณ เนื่องจากพวกเขามีตัวช่วย / สาธารณูปโภคอื่น ๆ อีกมากมายสิ่งล่อใจนั้นค่อนข้างแข็งแกร่งที่จะขึ้นอยู่กับรหัส Spring แม้ว่า
ประสิทธิภาพ
Pico - ฉันไม่ค่อยคุ้นเคยกับลักษณะความเร็วของ Pico
Guice - Guice ได้รับการออกแบบให้รวดเร็วและการเปรียบเทียบที่กล่าวถึงในการอ้างอิงมีตัวเลขบางส่วน แน่นอนว่าควรพิจารณาเรื่องความเร็วเป็นหลักไม่ว่าจะใช้ Guice หรือเดินสายด้วยมือ
ฤดูใบไม้ผลิ - ฤดูใบไม้ผลิอาจช้า มีงานที่ต้องทำให้เร็วขึ้นและการใช้ไลบรารี JavaConfig ควรเร่งความเร็ว
สะดวกในการใช้
Pico - ง่ายต่อการกำหนดค่า Pico สามารถตัดสินใจโดยอัตโนมัติให้คุณได้ ไม่ชัดเจนว่าจะปรับขนาดเป็นโครงการขนาดใหญ่มากอย่างไร
Guice - ง่ายต่อการกำหนดค่าคุณเพียงแค่เพิ่มคำอธิบายประกอบและสืบทอดจาก AbstractModule เพื่อผูกสิ่งต่างๆเข้าด้วยกัน ปรับขนาดได้ดีกับโครงการขนาดใหญ่เนื่องจากการกำหนดค่าจะถูกเก็บไว้ให้น้อยที่สุด
Spring - ค่อนข้างง่ายในการกำหนดค่า แต่ตัวอย่างส่วนใหญ่ใช้ Spring XML เป็นวิธีการกำหนดค่า ไฟล์ Spring XML อาจมีขนาดใหญ่และซับซ้อนเมื่อเวลาผ่านไปและต้องใช้เวลาในการโหลด ลองใช้ส่วนผสมของ Spring และ Dependency Injection เพื่อเอาชนะสิ่งนี้
ขนาดชุมชน
ปิโก - เล็ก
Guice - ปานกลาง
สปริง - ขนาดใหญ่
ประสบการณ์
Pico - ฉันไม่ค่อยมีประสบการณ์กับ Pico มากนัก แต่ไม่ใช่เฟรมเวิร์กที่ใช้กันอย่างแพร่หลายดังนั้นจึงหาทรัพยากรได้ยากขึ้น
Guice - Guice เป็นเฟรมเวิร์กยอดนิยมและยินดีที่จะให้ความสำคัญกับความเร็วเมื่อคุณมีโปรเจ็กต์ขนาดใหญ่ที่คุณกำลังรีสตาร์ทจำนวนมากในการพัฒนา ฉันมีข้อกังวลเกี่ยวกับลักษณะการกระจายของการกำหนดค่านั่นคือไม่ง่ายเลยที่จะดูว่าแอปพลิเคชันทั้งหมดของเรารวมเข้าด้วยกันอย่างไร มันคล้ายกับ AOP ในแง่นี้
ฤดูใบไม้ผลิ - ฤดูใบไม้ผลิมักจะเป็นตัวเลือกเริ่มต้นของฉัน กล่าวได้ว่า XML อาจยุ่งยากและส่งผลให้เกิดการชะลอตัวที่น่ารำคาญ ฉันมักจะลงเอยด้วยการผสมผสานระหว่าง Dependency Injection และ Spring ที่สร้างขึ้นด้วยมือ เมื่อคุณต้องการการกำหนดค่าตาม XML จริง Spring XML ค่อนข้างดี Spring ยังใช้ความพยายามอย่างมากในการทำให้เฟรมเวิร์กอื่น ๆ เป็นมิตรกับ Dependency Injection ซึ่งมีประโยชน์เนื่องจากมักใช้แนวทางปฏิบัติที่ดีที่สุดเมื่อทำเช่นนั้น (JMS, ORM, OXM, MVC เป็นต้น)
อ้างอิง