มีหลายวิธีในการรับถั่วในฤดูใบไม้ผลิและฉันจะสรุปอีกครั้ง:
ประเภทแรก: บันทึกวัตถุ ApplicationContext ในระหว่างการเริ่มต้น
ApplicationContext ac = ใหม่ filesystemxmlapplicationContext ("ApplicationContext.xml"); ac.getBean ("beanid"); หมายเหตุ: วิธีนี้เหมาะสำหรับแอปพลิเคชันแบบสแตนด์อโลนโดยใช้ Framework Spring และโปรแกรมต้องการโปรแกรมเพื่อเริ่มต้นสปริงด้วยตนเองผ่านไฟล์การกำหนดค่า
ประเภทที่สอง: รับวัตถุ ApplicationContext ผ่านคลาสเครื่องมือที่จัดทำโดยฤดูใบไม้ผลิ
นำเข้า org.springframework.web.context.support.webapplicationContextUtils; ApplicationContext AC1 = webApplicationContextUtEtUtrequiredWebapplicationContext (servletContext SC); sc); ac1.getBean ("beanid"); ac2.getBean ("beanid"); ภาพประกอบ:
1. ทั้งสองวิธีนี้เหมาะสำหรับระบบ B/S โดยใช้ Framework Spring ได้รับวัตถุ ApplicationContext ผ่านวัตถุ ServletContext จากนั้นรับอินสแตนซ์คลาสที่ต้องการผ่าน
2. วิธีแรกจะมีข้อยกเว้นเมื่อการได้มาล้มเหลวและวิธีที่สองจะส่งคืนค่า NULL
ประเภทที่สาม: สืบทอดมาจากคลาสนามธรรม ApplicationObjectSupport
หมายเหตุ: วิธีการ getApplicationContext () ที่จัดทำโดย Application ApplicationObjectSupport ระดับนามธรรมสามารถรับอินสแตนซ์ ApplicationContext ได้อย่างง่ายดายจากนั้นรับถั่วในคอนเทนเนอร์สปริง เมื่อฤดูใบไม้ผลิเริ่มต้นวัตถุ ApplicationContext จะถูกฉีดผ่านเมธอด SetApplicationContext (ApplicationContext บริบท) ของคลาสนามธรรม
ประเภทที่สี่: สืบทอดมาจากคลาสนามธรรม WebApplicationObjectSupport
หมายเหตุ: คล้ายกับวิธีการข้างต้นรับอินสแตนซ์ WebApplicationContext โดยเรียก getWebapplicationContext ();
ประเภทที่ห้า: การใช้งานอินเตอร์เฟส ApplicationContextaware
คำอธิบาย: ใช้เมธอด SetApplicationContext (ApplicationContext บริบท) ของอินเทอร์เฟซนี้และบันทึกวัตถุ ApplicationContext เมื่อสปริงเริ่มต้นวัตถุ ApplicationContext จะถูกฉีดผ่านวิธีนี้
แม้ว่าฤดูใบไม้ผลิจะให้สามวิธีสุดท้ายในการใช้งานการสืบทอดหรือการใช้งานคลาสหรืออินเทอร์เฟซที่สอดคล้องกันในคลาสทั่วไปเพื่อให้ได้วัตถุแอปพลิเคชันของ Spring เมื่อใช้งานคุณต้องใส่ใจกับการสืบทอดหรือการใช้คลาสนามธรรมหรืออินเทอร์เฟซเหล่านี้ หรือวัตถุ ApplicationContext ที่ได้รับจะเป็นโมฆะ
ต่อไปนี้แสดงวิธีการรับถั่วในคอนเทนเนอร์ฤดูใบไม้ผลิโดยใช้อินเตอร์เฟส ApplicationContextaware:
ขั้นแรกให้ปรับแต่งคลาสที่ใช้อินเทอร์เฟซ ApplicationContextaware และใช้วิธีการภายใน:
แพ็คเกจ com.ghj.tool; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.applicationContextaware; Private Static SpringConfigTool SpringConfigTool = NULL; Synchronized Static SpringConfigTool init () {if (SpringConfigTool == NULL) {SpringConfigTool = New SpringConfigTool (); } return springconfigtool; } โมฆะสาธารณะ setApplicationContext (ApplicationContext ApplicationContext) พ่น beansexception {ac = applicationcontext; } วัตถุที่ซิงโครไนซ์สาธารณะ getBean (สตริง BeanName) {return ac.getBean (BeanName); - ประการที่สองกำหนดค่าในไฟล์ applicationcontext.xml:
คัดลอกรหัสดังนี้: <bean id = "SpringConfigTool"/>>>
ในที่สุดคุณสามารถรับถั่วที่เกี่ยวข้องในคอนเทนเนอร์สปริงผ่านรหัสต่อไปนี้:
การคัดลอกรหัสมีดังนี้: SpringConfigtool.getBean ("Beanid");
โปรดทราบว่าเมื่อเซิร์ฟเวอร์เริ่มต้นการเริ่มต้นของคอนเทนเนอร์สปริงจะไม่สามารถรับคอนเทนเนอร์สปริงได้ด้วยวิธีการต่อไปนี้:
นำเข้า org.springframework.web.context.contextloader; นำเข้า org.springframework.web.context.webapplicationContext; WebApplicationContext WAC = contextloader.getCurrentWebapplicationContext (); wac.getBean (beanid);
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน