الربيع هو انعكاس خفيف الوزن للسيطرة (IOC) وإطار حاوية موجهة نحو الظل (AOP). كيفية الحصول على الفاصوليا التي تم تكوينها في الربيع في البرنامج؟
Bean Factory (com.springframework.beans.factory.beanfactory) هي الواجهة الأساسية لإطار الربيع. ويوفر آلية تكوين IOC المتقدمة. Beanfactory يجعل من الممكن إدارة أنواع مختلفة من كائنات Java. يعتمد سياق التطبيق (com.springframework.context.applicationContext) على Beanfactory ويوفر المزيد من الوظائف الموجهة نحو التطبيق. يوفر نظامًا دوليًا للدعم والإطار ، مما يسهل إنشاء تطبيقات عملية. ندعو عمومًا Beanfactory عن حاوية IOC ، و ApplicationContext سياق تطبيق. ولكن في بعض الأحيان من أجل كتابة الراحة ، فإننا ندعو أيضًا ApplicationContext Spring Container.
لأغراض الاثنين ، يمكننا ببساطة تقسيمهما: Beanfactory هو البنية التحتية لإطار الربيع ، الذي يهدف إلى الربيع نفسه ؛ ApplicationContext مخصص للمطورين الذين يستخدمون إطار الربيع. في جميع مناسبات التطبيق تقريبًا ، نستخدم تطبيق ApplicationContext مباشرة بدلاً من Beanfactory الأساسي.
هناك فرق كبير بين تهيئة Application Context و Beanfactory: عندما يقوم Beanfactory بتهيئة الحاوية ، فإنه لا يقوم على إنشاء مثيل للفاصوليا حتى يتم الوصول إلى الفاصوليا المستهدفة لأول مرة ؛ بينما يقوم ApplicationContext بتأسيس جميع فاصوليا مثيل واحد عند تهيئة سياق التطبيق. لذلك ، سيكون وقت تهيئة Application Context أطول قليلاً من وقت Beanfactory
لا تتضمن هذه المقالة الحقن التلقائي من خلال Resource و Autowired ، ولا تحصل إلا على الفاصوليا في ملف تكوين الربيع من خلال ApplicationContext.
للحصول على تكوين الفول في XML ، فإن الشيء الأكثر أهمية هو الحصول على org.springframework.context.applicationContext
الطريقة الأولى للحصول على ApplicationContext:
استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.filesystemxmlapplicationContext
أو
استيراد org.springframework.context.applicationContext ؛ استيراد org.springframework.context.support.classpathxmlapplicationContext
إن إنشاء تطبيق ApplicationContext بهذه الطريقة يستغرق وقتًا طويلاً للغاية. بهذه الطريقة مناسبة للتطبيقات المستقلة باستخدام إطار الربيع. يوصى باستخدامه فقط عندما يحتاج البرنامج إلى تهيئة الربيع يدويًا من خلال ملفات التكوين. فئات التنفيذ الرئيسية لـ ApplicationContext هي classpathxmlapplicationContext و fileystemxmlapplicationContext. يقوم السابق بتحميل ملفات التكوين من ClassPath افتراضيًا ، ويقوم الأخير بتحميل ملفات التكوين من نظام الملفات افتراضيًا.
مثال:
الفئة العامة beanmanager {private static applicationcontext context = new classpathxmlapplicationContext ("appcontext.xml") ؛ getBean public static getBean (String beanid) {return context.getBean (beanid) ؛}}اكتب servlet في web.xml ، ابدأ تلقائيًا ، واتصل BeanManager في طريقة init
init () يلقي ServleTexception {BeanManager BM = New BeanManager () ؛ // اختياري ، بحيث يقوم الربيع بتحميل تكوين الفول عند بدء تشغيل تطبيق الويب. // خلاف ذلك ، سيتم تحميله عندما يتم استدعاء BeanManager لأول مرة ، مما يؤثر على السرعة مرة واحدة. }استخدم beanmanager.getBean (سلسلة Beanid) ؛ في رمز Java للحصول على مثيل Bean.
الطريقة الثانية للحصول على ApplicationContext: الحصول على كائن ApplicationContext من خلال فئة الأدوات المقدمة بواسطة Spring. إنها طريقة مخصصة خصيصًا لمشاريع الويب. يوصى باستخدامه في مشاريع الويب. على سبيل المثال:
servletContext servletContext = request.getSession (). getServletContext () ؛ applicationContext ac1 = webapplicationContextutils .getRequiredWebapplicationContext (servletcontext sc) ApplicationContex SC) AC1.GetBean ("Beanid") ؛ AC2.GetBean ("Beanid") ؛احصل على كائن مثيل ApplicationContext من خلال javax.servlet.servletcontext ، مما يعني أن هذا الطلب والجلسة وما إلى ذلك يجب استخدامه.
وبهذه الطريقة ، لا يمكن تعيين كائن ApplicationContext كمتغير عضو. في كل طريقة محددة ، تحتاج إلى الحصول على servletcontext من خلال الطلب ، والجلسة ، وما إلى ذلك ، ثم الحصول على مثيل ApplicationContext.
لذلك ، يوصى بهذه الطريقة فقط في حالة يمكنك الحصول على كائن ServletContext ولا تحتاج إلى تحديد كائن ApplicationContext كمتغير عضو.
ملاحظة: عند استخدام webapplicationContextUtils للحصول على مثيل ApplicationContext ، تحتاج إلى إضافة org.springframework.web.context.contextloaderListener مستمع في ملف تكوين web.xml ، وإلا لا يمكن الحصول على كائن ApplicationContext وإرجاعه.
ملف التكوين: web.xml
<!-ContextLoaderListener يقوم بحقن ApplicationContext تلقائيًا ، ويحصل على-> <!-موقع تحميل ملف تكوين الربيع-> <context-param> <Param-name> contextConfigLocation </par am-name> <Param-value> /web-inf/spring/appcontext.xml ،
3. ورثت من Application ApplicationObjectSupport
يوفر ApplicationObjectSupport الفئة التجريدية طريقة getApplicationContext () ، والتي يمكن بسهولة الحصول على ApplicationContext. عند تهيئة Spring ، سيتم حقن كائن ApplicationContext من خلال طريقة setAppLicationContext (ApplicationContext Context) للفئة التجريدية.
4. ورثت من فئة مجردة webapplicationObjectSupport
استخدم getWebapplicationContext () للحصول على org.springframework.web.context.webapplicationContext لأن تطبيقات الويب لها ميزات أكثر من التطبيقات العادية ، يمتد WebApplicationContext ApplicationContext. يحدد WebapPlicationContext ROUT_WEB_APPLICATION_ context_attribute. عند بدء تشغيل السياق ، يتم وضع مثيل webapplicationContext في قائمة سمة ServletContext مع هذا المفتاح. لذلك ، يمكننا الحصول مباشرة على webapplicationContext من حاوية الويب من خلال العبارة التالية:
webapplicationContext wac = (webapplicationContext) servletContext.getAttribute (webapplicationContext.root_web_application_context_attribute) ؛
5. تنفيذ واجهة ApplicationContextAware
قم بتنفيذ طريقة setAppLicationContext (ApplicationContext Context) من هذه الواجهة وحفظ كائن ApplicationContext. عند تهيئة الربيع ، يتم حقن كائن ApplicationContext من خلال هذه الطريقة.
تتطلب جميع الطرق الثالثة والرابعة والخامسة تكوين الفصل في ملف تكوين الربيع:
<!-على افتراض أن ApplicationContextTool هو فئة تنفيذ محددة ترث أو تنفذ الطريقة الثالثة والرابعة والخامسة-> </bean>
خلاف ذلك ، لن يتم استرداد ApplicationContext وإرجاع NULL.
يقدم المحتوى أعلاه ملخصًا لطريقة الفول الربيعي في جافا ، وآمل أن يعجبك ذلك.