يدرس هذه المقالة بشكل رئيسي المحتويات ذات الصلة لترتيب تنفيذ تحميل حبوب الربيع ، على النحو التالي.
مصدر المشكلة:
هناك حبة هي وحبة هي B. عندما يتم إنشاء مثيل له ، فأنت تريد تعيين اسم خاصية لطريقة إلى قيمة إرجاع B.
إذا كانت مكتوبة للتو في:
private B b;
private String name = b.funb();
سيتم الإبلاغ عن خطأ وأن NullPointException هو أنه لم يتم تحديد B في هذا الوقت ، لذلك فهو لاغ.
الحل هو كما يلي الكود ، وفي الوقت نفسه ، تعلم ترتيب تنفيذ التهيئة وطريقة بناء الكائنات وطريقته في فصل الربيع.
الفئة العامة A تنفذ تهيئة {private b b ؛ اسم السلسلة الخاصة ؛ // = b.funb () ؛ public void setb (b b) {system.out.println ("A.SetB initial") ؛ this.b = b ؛} public a () {system.out.println ("a initaled") ؛} public void init () {system.out.println ("init") ؛ this.name = b.funb () ؛}@Outride Public String ToString () {return super.toString () + this.name ؛} public void بعد propertiesset () يلقي استثناء {// في الواقع ، من الممكن أيضًا وضعه هنا // this.name = b.funb () ؛ System.out.println ("بعد propertiesset") ؛}} الفئة العامة B {public string funb () {system.out.println ("funb") ؛ return "ملف تكوين الربيع
أقل
رمز الاختبار:
Public Static Void Main (String [] args) {ApplicationContext context = new fileystemxmlapplicationContext ("src/testSpring/bean.xml") ؛إخراج البرنامج هو:
أبعاد
ب
A.SetB الأولي
بعد propertiesset
init
funb
[email protected]
من هنا ، يمكننا أن نرى أن سمة اسم A يتم تعيينها بنجاح على قيمة إرجاع طريقة FANB لـ B عند تحميل الفول. النقطة الأساسية هي استخدام Method init لتنفيذها.
يمكن أيضًا اعتبار ترتيب التحميل:
أول مُنشئ -> ثم B SET Method Injection -> MotionizationBean AfterPropertiesset Method -> Method Method
المحتوى التالي مقتطف من الكتاب ، لكنني وجدت أنه حتى لو كنت أقر مرة واحدة ، فإن فهمي لمحتواه سيكون أكثر تعمقا!
1. عملية فول مجموعة الربيع
1.
2. تعيين قيمة السمة ؛
3. إذا تم تنفيذ واجهة Beannameaware ، فاستدعاء SetBeanName لتعيين معرف الفول أو الاسم ؛
4. إذا قمت بتطبيق واجهة Beanfactoryaware ، فاستدعاء SetBeanFactory لتعيين Beanfactory ؛
5. إذا تم تطبيق ApplicationContextAwar
6. استدعاء طريقة ما قبل التقديم لـ BeanPostProcessor ؛
7. استدعاء طريقة بعد propertiesset () للتهيئة ؛
8. استدعاء طريقة مخصصة مخصصة ؛
9. استدعاء طريقة ما بعد التقديم لـ BeanPostProcessor ؛
عملية إيقاف حاوية الربيع
1. استدعاء DiscipableBean تدمير () ؛
2. استدعاء طريقة التدمير المخصصة ؛
1. فول واحد
حمولة
1.
2. تعيين قيمة السمة ؛
3. إذا تم تنفيذ واجهة Beannameaware ، فاستدعاء SetBeanName لتعيين معرف الفول أو الاسم ؛
4. إذا قمت بتطبيق واجهة Beanfactoryaware ، فاستدعاء SetBeanFactory لتعيين Beanfactory ؛
5. إذا تم تطبيق ApplicationContextAwar
6. استدعاء طريقة ما قبل التقديم لـ BeanPostProcessor ؛
7. استدعاء طريقة بعد propertiesset () للتهيئة ؛
8. استدعاء طريقة مخصصة مخصصة ؛
9. استدعاء طريقة ما بعد التقديم لـ BeanPostProcessor ؛
حاوية الربيع إغلاق
1. استدعاء DiscipableBean تدمير () ؛
2. استدعاء طريقة التدمير المخصصة ؛
2. ترتيب الفاصوليا المتعددة
إعطاء الأولوية لتحميل فول تطبيق BeanpostProcessor
من أجل تعريف الفاصوليا ، ترتيب تحميل الفاصوليا (حتى لو كان هناك معرف فوق الكتابة عند تحميل ملفات ربيع متعددة)
عند "ضبط قيمة السمة" (الخطوة 2) ، عند مواجهة المرجع ، يتم تحميل الفول المقابل لمعرف المرجع أولاً بعد "إنشاء" (الخطوة 1).
ستستدعي الفئة الفرعية لـ AbstractFactoryBean طريقة CreateInstance بعد الخطوة 6 ، ثم سيتم استدعاء طريقة getObjectType.
ستغير فئة BeanFactoryUtils ترتيب تحميل الفاصوليا.
ما سبق هو كل محتوى هذه المقالة حول ترتيب تنفيذ تحميل حبوب الربيع ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!