1. ماذا يمكن أن يفعل الربيع؟
الغرض الرئيسي من الربيع هو جعل J2EE سهلة الاستخدام وتعزيز عادات البرمجة الجيدة.
جوهر تصميم حاوية التحكم المقلوبة هو حزمة org.springframework.beans ، المصممة للعمل مع Javabeans. لا يتم استخدام هذه الحزمة بشكل مباشر من قبل المستخدمين ، ولكنها بمثابة أساس لمزيد من الخدمات الوظيفية الأخرى. تجريد المستوى الأعلى التالي هو "مصنع الفول". Spring Bean Factory هو مصنع طبيعي يمكّن من استرداد الكائنات بالاسم ويدير العلاقات بين الكائنات. مصانع الفول تدعم نمطين كائن :. Singleton: في هذا النمط ، هناك مثيل كائن مشترك يحمل اسمًا محددًا ، يتم استرداده عند البحث. هذا هو الافتراضي ويتم استخدامه بشكل شائع. إنه نمط مثالي للكائنات عديمة الجنسية. .Prototype: في هذا الوضع ، سيتم إنشاء كائن منفصل في كل مرة يتم فيها الحصول على الجلب.
2. تبدأ طريقة التحميل والتنفيذ في فصل الربيع
الأول: تنفيذ العمليات قبل تهيئة وتدمير الفاصوليا عن طريق التعليق على أساليب postconstruct و predestroy
النوع الثاني: تحديد أساليب الأخلاق الوهمية وطرق القدر في XML
النوع الثالث: تنفيذ واجهات initializingBean و DiscipableBean من خلال الفاصوليا
النوع الرابع: اكتب فصلًا لتنفيذ واجهة BeanPostProcessor. هذه الواجهة لها طريقتين.
(1): طريقة postprocessbeforeinitialization ، اتصل بهذه الطريقة قبل تهيئة الفول المحددة في الربيع قبل تعريف الفول في الربيع
(2): طريقة ما بعد المعالجة.
InstantiationAwareBeanPostProcessor هو واجهة فرعية من BeanpostProcessor
تنفيذ بعد تحميل حاوية الربيع
من مستمع الربيع كدخول.
org.springframework.web.context.contextLoaderListener
ابحث عن طريقة تهيئة الربيع
/*** تهيئة سياق تطبيق الويب الجذر. */ Override public void contextinitialized (ServletContexTevent Event) {initWebApplicationContext (event.getServletContext ()) ؛ }أدخل طريقة initWebPlicationContext
if (this.context == null) {this.context = createWebapplicationContext (servletContext) ؛ } if (this.context extleof configableWebapplicationContext) {configableWebapplicationContext cwac = (configableWebapplicationContext) this.context ؛ إذا (! cwac.isaction ()) {// لم يتم تحديث السياق بعد -> توفير خدمات مثل // تعيين سياق الأصل ، وضع معرف سياق التطبيق ، إلخ إذا (cwac.getParent () == null) {// تم حقن مثيل السياق بدون الوالد الصريح -> // تحديد الوالد على شبكة الإنترنت ، إذا كان ذلك. ApplicationContext parent = loadParentContext (servletContext) ؛ cwac.setParent (الوالد) ؛ } configaReAndRefreshWebapplicationContext (CWAC ، servletContext) ؛ }} ApplicationListener
1. اكتب فئة مستمع يقوم بتطبيق تطبيق application.
استيراد org.springframework.context.applicationListener ؛ استيراد org.springframework.context.contextrefreshedevent ؛ import org.springframework.stereotypy onapplicationEvent (حدث contextrefreshedevent) {if (event.getApplicationContext (). getParent () == null) // لا يحتوي سياق تطبيق الجذر على الوالد ، فهو هو الرئيس. {// سيتم تنفيذ الكود المنطقي الذي يجب تنفيذه بعد تهيئة حاوية الربيع. system.out.println ("/n/n/n/n/n/n ______________/n/n/n محملة/n/n _________/n/n") ؛ } // أو الطريقة التالية if (event.getapplicationContext (). getDisPlayName (). يساوي ("ROOT WebapplicationContext")) {system.out.println ("/n/n/n ________/n/n تم تحميله مرة واحدة/n/n _________/n/n") ؛ }}}2. اضبط حزمة مسح الخدمة في ملف التكوين (ApplicationContext-servlet.xml)
<!-سجل controller ، service-> <context: component-scan base-package = "com.test.controller" use-default-filters = "false"> <context: include-filter type = "annotation" expression = "org.springframework.stereytreype.Controller" /> Expression = "org.springframework.stereotype.service" /> < /context: Component-Scan>
3. نشر مشروع بدء التشغيل وطباعة "تحميل" بعد تحميل الربيع
ApplicationOntext و WebApplicationOntext بعد استخدام MVC سيتصل بالطريقة أعلاه مرتين. كيفية التمييز بين هاتين الحاوين؟
ولكن في هذا الوقت ، ستكون هناك مشكلة. في مشروع الويب (SpringMVC) ، سيكون هناك حاويتان في النظام ، إحداها هي سياق الجذر ، والآخر هو اسم المشروع الخاص بنا (كصاحب فرعي لسياق الجذر).
في هذه الحالة ، سيتم تنفيذ طريقة OnApplicationEvent مرتين. لتجنب المشكلات المذكورة أعلاه ، لا يمكننا إلا استدعاء الكود المنطقي بعد تهيئة سياق الجذر. إذا تم الانتهاء من تهيئة الحاويات الأخرى ، فلن يتم إجراء أي معالجة. بعد اكتمال الرمز المعدل ، سيتم تعديل الرمز.
على النحو التالي:
Override public void onapplicationEvent (intextrefreshedevent event) {if (event.getApplicationContext (). getParent () == null) {// جذر تطبيق تطبيق لا يوجد أحد الوالدين ، إنه الرئيس. // سيتم تنفيذ الكود المنطقي الذي يجب تنفيذه عند تهيئة حاوية الربيع. }}ترتيب التهيئة هو:
مُنشئ> postconstruct> initializingBean> init-method
لخص
ما سبق هو كل شيء عن التحليل الأولي لإطار الربيع في هذه المقالة ، وآمل أن يكون مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة في أي وقت وسيقوم المحرر بالرد على الجميع في الوقت المناسب. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!