การกำหนดค่าคำอธิบายประกอบมีข้อดีมากกว่าการกำหนดค่า XML หลายประการ:
สามารถใช้กลไกการสะท้อนของ Java ได้อย่างเต็มที่เพื่อรับข้อมูลโครงสร้างคลาส ซึ่งสามารถลดงานการกำหนดค่าได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น เมื่อใช้คำอธิบายประกอบ JPA เพื่อกำหนดค่าการแมป ORM เราไม่จำเป็นต้องระบุชื่อแอตทริบิวต์ PO ประเภท และข้อมูลอื่นๆ หากฟิลด์ตารางความสัมพันธ์และชื่อและประเภทแอตทริบิวต์ PO สอดคล้องกัน คุณไม่จำเป็นต้องเขียนแอตทริบิวต์งานด้วยซ้ำ ข้อมูลการแมป - เนื่องจากข้อมูลนี้สามารถได้รับผ่านกลไกการสะท้อนของ Java
ความคิดเห็นและโค้ด Java อยู่ในไฟล์เดียว ในขณะที่การกำหนดค่า XML ใช้ไฟล์การกำหนดค่าอิสระ ข้อมูลการกำหนดค่าส่วนใหญ่จะไม่ได้รับการปรับเปลี่ยนหลังจากพัฒนาโปรแกรมแล้ว หากวางข้อมูลการกำหนดค่าและโค้ด Java ไว้ด้วยกัน จะช่วยเพิ่มการทำงานร่วมกันของ โปรแกรมเพศ ด้วยไฟล์การกำหนดค่า XML ที่เป็นอิสระ โปรแกรมเมอร์มักจะต้องสลับระหว่างไฟล์โปรแกรมและไฟล์การกำหนดค่าอย่างต่อเนื่องเมื่อเขียนฟังก์ชัน ความไม่สอดคล้องกันในการคิดนี้จะลดประสิทธิภาพในการพัฒนา
ดังนั้น ในหลายกรณี การกำหนดค่าคำอธิบายประกอบจึงได้รับความนิยมมากกว่าการกำหนดค่า XML และการกำหนดค่าคำอธิบายประกอบมีแนวโน้มความนิยมเพิ่มเติม การปรับปรุงที่สำคัญของ Spring 2.5 คือการแนะนำคลาสคำอธิบายประกอบจำนวนมาก ตอนนี้คุณสามารถใช้การกำหนดค่าคำอธิบายประกอบเพื่อทำให้ฟังก์ชันการกำหนดค่า XML ส่วนใหญ่สมบูรณ์ได้
ในกรณีที่ใช้การกำหนดค่าคำอธิบายประกอบและการกำหนดค่า XML
ด้วยคำอธิบายประกอบ IOC เหล่านี้ เราสามารถละทิ้งวิธีการกำหนดค่า XML ดั้งเดิมโดยสิ้นเชิงได้หรือไม่ คำตอบคือไม่ มีสาเหตุหลายประการ:
การกำหนดค่าคำอธิบายประกอบไม่จำเป็นต้องเหนือกว่าการกำหนดค่า XML โดยธรรมชาติ หากการขึ้นต่อกันของ Bean ได้รับการแก้ไขแล้ว (เช่น บริการใช้คลาส DAO) และข้อมูลการกำหนดค่านี้จะไม่ได้รับการปรับเปลี่ยนในระหว่างการปรับใช้ การกำหนดค่าคำอธิบายประกอบจะดีกว่าการกำหนดค่า XML ในทางกลับกัน หากการขึ้นต่อกันนี้จะไม่ได้รับการปรับเปลี่ยนในระหว่างการปรับใช้ เมื่อมีการปรับเปลี่ยน การกำหนดค่า XML จะดีกว่าการกำหนดค่าคำอธิบายประกอบอย่างเห็นได้ชัด เนื่องจากคำอธิบายประกอบเป็นการปรับเปลี่ยนซอร์สโค้ด Java และคุณต้องเขียนซอร์สโค้ดใหม่และคอมไพล์ใหม่ก่อนจึงจะสามารถนำการปรับเปลี่ยนไปใช้
หาก Bean ไม่ใช่คลาสที่เขียนด้วยตัวเอง (เช่น JdbcTemplate, SessionFactoryBean ฯลฯ) การกำหนดค่าคำอธิบายประกอบจะไม่ถูกนำมาใช้ และการกำหนดค่า XML เป็นเพียงวิธีเดียวที่ใช้งานได้
การกำหนดค่าคำอธิบายประกอบมีแนวโน้มที่จะอยู่ในระดับชั้นเรียน ในขณะที่การกำหนดค่า XML สามารถยืดหยุ่นได้มากกว่า ตัวอย่างเช่น เมื่อเปรียบเทียบกับคำอธิบายประกอบธุรกรรม @Transaction การกำหนดค่าธุรกรรมโดยใช้เนมสเปซ aop/tx จะมีความยืดหยุ่นและง่ายกว่า
ดังนั้น เมื่อใช้งานแอปพลิเคชัน เรามักจะต้องใช้การกำหนดค่าคำอธิบายประกอบและการกำหนดค่า XML ในเวลาเดียวกัน สำหรับการกำหนดค่าในระดับคลาสที่จะไม่เปลี่ยนแปลง การกำหนดค่าคำอธิบายประกอบสามารถได้รับความสำคัญสำหรับคลาสของบุคคลที่สามและการกำหนดค่าที่ง่ายดาย ปรับ ควรให้ความสำคัญกับการกำหนดค่า XML Spring จะหลอมรวมข้อมูลเมตาของวิธีการกำหนดค่าทั้งสองนี้เข้าด้วยกัน ก่อนที่จะดำเนินการสร้าง bean และ bean injector
สรุป
Spring ได้ให้การสนับสนุนอย่างมากสำหรับการกำหนดค่าคำอธิบายประกอบตั้งแต่ 2.1 และฟังก์ชันการกำหนดค่าคำอธิบายประกอบได้กลายเป็นหนึ่งในไฮไลท์ที่ใหญ่ที่สุดของ Spring 2.5 การใช้การกำหนดค่าคำอธิบายประกอบ Spring 2.5 อย่างสมเหตุสมผลสามารถลดภาระงานการกำหนดค่าและปรับปรุงการทำงานร่วมกันของโปรแกรมได้อย่างมีประสิทธิภาพ แต่ไม่ได้หมายความว่าการกำหนดค่า XML แบบดั้งเดิมจะหมดไป การกำหนดค่า XML ยังคงมีฟังก์ชันที่ไม่สามารถถูกแทนที่ได้ในการกำหนดค่าคลาส bean ของบริษัทอื่น เช่นเดียวกับการกำหนดค่าเนื้อหา เช่น แหล่งข้อมูล พูลแคช คลาสเทมเพลตการดำเนินการเลเยอร์การคงอยู่ การจัดการธุรกรรม ฯลฯ สถานะ