คำนำ
มีหลายวิธีในการฉีดอินสแตนซ์ในฤดูใบไม้ผลิ แต่เนื่องจากลำดับการเริ่มต้นที่แตกต่างกันวิธีการฉีดที่ใช้คำอธิบายประกอบมีแนวโน้มที่จะล้มเหลวในการฉีดอย่างถูกต้อง
บทความนี้จะแนะนำวิธีที่ใช้แบบไดนามิกในการสกัดถั่วที่มีการจัดการฤดูใบไม้ผลิในโครงการจริง ฉันจะไม่พูดด้านล่างมากนักลองมาดูการแนะนำรายละเอียดด้วยกัน
1. อินสแตนซ์ฉีดขึ้นอยู่กับการติดฉลาก
เมื่อถั่วเริ่มต้นวัตถุที่ขึ้นอยู่กับจะต้องเริ่มต้น หากวัตถุที่ถูกฉีดจะเริ่มต้นช้ากว่าวัตถุปัจจุบันวัตถุที่ถูกฉีดจะเป็นโมฆะ
1.1 @autowired
โหลดถั่วที่จัดการสปริงตามประเภท โดยค่าเริ่มต้นถั่วของมันจะต้องมีอยู่ หากถั่วเป็นโมฆะคุณสมบัติที่ต้องการสามารถตั้งค่าเป็นเท็จ สำหรับรายละเอียดเฉพาะโปรดดูที่ซอร์สโค้ด:
@Target ({ElementType.Constructor, ElementType.method, ElementType.Parameter, ElementType.field, ElementType.annotation_type})@retention *ค่าเริ่มต้นเป็น {@code true}.*/boolean ต้องการ () ค่าเริ่มต้นจริง;}หากคุณต้องการฉีดถั่วตามคำสั่งคุณต้องใช้ @qualifier เพื่อติดฉลากชื่อ ตัวอย่างรหัสมีดังนี้:
@autwired@qualifier ("Beanname") Private Beantype Beanobj;ขอบเขตแอปพลิเคชัน: ตัวแปรเหนือวิธีการตั้งค่าและตัวสร้าง
ที่มา: กรอบฤดูใบไม้ผลิ
1.2 @inject
จัดทำโดย javax.inject.inject มันจะประกอบโดยอัตโนมัติตามประเภท หากคุณต้องการถ่ายโอนตามชื่อคุณต้องใช้ @named ร่วมกับมัน การใช้งานนี้คล้ายกับ @autowired ที่จัดทำโดย Framework Spring
ขอบเขตแอปพลิเคชัน: ตัวแปร, วิธีการตั้งค่า, ตัวสร้าง
ที่มา: JSR330 ข้อมูลจำเพาะ Javax Extension Package
ตัวอย่างรหัส:
@inject@named ("Beanname") Beantype Bean ส่วนตัว;1.3 @Resource
ค่าเริ่มต้นคือการฉีดแอสเซมบลีตามชื่อ เฉพาะเมื่อไม่พบถั่วที่จับคู่ชื่อจะฉีดตามประเภท มีให้หลังจาก JDK 1.6
ขอบเขตแอปพลิเคชัน: สามารถนำไปใช้กับตัวแปรและวิธีการตั้งค่า
ที่มา: ให้หลังจาก JDK 1.6
ตัวอย่างการใช้รหัส:
@Resource (name = "myBeanName") ถั่วถั่วส่วนตัว;
2. วิธีการฉีดแบบไดนามิก
แนวคิด: ใช้ ApplicationContextaware เพื่อรับการอ้างอิงของ ApplicationContext จากนั้นรับวัตถุแบบไดนามิกตาม ApplicationContext
รหัสการใช้งานมีดังนี้:
@ComponentPublic Class SpringContextUtil ใช้ ApplicationContextAware {// สปริงแอปพลิเคชันบริบทสภาพแวดล้อมแบบคงที่ applicationcontext applicationcontext;/** ใช้วิธีการโทรกลับของอินเทอร์เฟซ ApplicationContextaware และตั้งค่าบริบท ** @param application*/public Void setapplicationContext (ApplicationContext Static ApplicationContext getApplicationContext () {ส่งคืน ApplicationContext;}/*** รับ Object ** @param ชื่อ* @return Object* @throws beansexception*/วัตถุคงที่สาธารณะ getBean (ชื่อสตริง) โยน beansexception {return applicationcontext.getBean (ชื่อ);}}หลังจากนั้นคุณสามารถรับอินสแตนซ์ถั่วที่ต้องการได้ในรหัส:
Beantype Bean = SpringContextUtil.getBean ("Beanname")มันใช้งานง่ายมากเหรอ?
สรุป
ที่นี่เราสรุปวิธีการต่าง ๆ ในการฉีดถั่วลงในฤดูใบไม้ผลิแต่ละอันมีข้อดีและข้อเสียและคุณสามารถเลือกใช้มันได้
โอเคข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com