مقدمة
في المقالة السابقة ، يذكر أنه من خلال واجهات مثل التهيئة والتصرف ، يمكن إجراء بعض العمليات المخصصة لتهيئة الفول وتدميرها. شيء واحد يجب ملاحظته هو أنه مجرد عملية بعد أن يتم إنشاء مثيل لها بواسطة حاوية. في عالم الربيع ، إذا كنت ترغب في القيام بشيء حيال عملية التثبيت ، كمطور أعمال عادي ، فمن الواضح أنك لست بحاجة إلى ورث ApplicationContext أو Beanfactory ، لأن حاوية الربيع توفر لنا بعض الواجهات ، مما يسمح لنا بتمديد عملية التهيئة للفاصوليا بواسطة BPP -interfate المقطوعة المقطوعة.
رمز المصدر ، خذ نظرة خاطفة على التسلل
هذا الاستخدام بسيط للغاية. لديها فقط طريقتين. نقوم بتنفيذ معالج BeanPostProcessor الخاص بنا ، ويمكن لـ Spring تسجيله تلقائيًا في الحاوية.
حيث يتم تنفيذ الطريقة السابقة بعد تثبيت الفول ، بعد إعداد الممتلكات ولكن قبل طريقة التهيئة ؛ بعد تنفيذ الطريقة بعد طرق التهيئة المختلفة.
الحديث عن هذا ، قد يتساءل بعض الناس ، ما هو الفرق بين هذا وواجهات التهيئة الأخرى في دورة الحياة؟ يمكن لطرق التهيئة الأخرى أيضًا تعديل الفاصوليا. هذا السؤال جيد. دعنا نتحدث عن الفرق الأساسي بين هذه الواجهة والواجهة التهيئة التي يمكن التخلص منها وطريقة تدمير init المخصصة.
هناك نوعان من BPPs خاصة هنا. يجب أن أقول أنه إذا كنت بحاجة إلى تخصيص شرح مماثل لوظيفة حقن AUTOWIRE أو @الحقن (يمكنك استخدام InjectionMetadata) ، فقد لا تلبي BPPs العادية احتياجاتك ، وقد تستخدم اثنين من BPPs خاصة.
MERGEDBEANDEFINITIONPOSTPROCESS (يشار إليه فيما يلي باسم MBDPP)
instantiationAwareBeanPostProcessor (المشار إليها فيما يلي باسم IABPP)
يرثون جميعًا من BPP ، لكن نقطة الدخول في عملية إنشاء حبوب الربيع تختلف عن BPP العادي.
InstantiationAwareBeanPostProcessor واجهة
انظر التعليقات
طريقة postprocessbeforeinstantiation
تحقق من طريقة CreateBean لـ AsstrumentAutOwIreCableBeanFactory (هذه الطريقة هي الطريقة الأساسية لإنشاء الفاصوليا في حاويات الزنبرك). يمكنك أن ترى أن ما بعد المعالجة من قبل تنشيط الفاصوليا ، يتم تعيين ما بعد المعالجة. يتم استخدامه بشكل عام داخليًا في إطار الربيع ، ولكن هناك إمكانات كبيرة هنا. استخدام ما بعد المعالجة foryinstantiation لإنشاء كائنات وكيل (الطريقة العامة هي جعل عودة ما بعد المعالج ، غير خالية ، والتي ستقطع العملية اللاحقة لإنشاء مثيلات الفول. انظر رمز المصدر:
طريقة postprocessPropertyValues
استخدم القيم التي تندرج بعد العملية لإكمال العمليات المختلفة على الخصائص ، وتوحل البيانات الوصفية في التعليقات التوضيحية ، وما إلى ذلك. إن حقن Autowire Spring ، و JSR330's inject ، و JSR250 ، يتم إكمال جميع عمليات الحقن وغيرها من عمليات الحقن من خلال هذه الطريقة.
يتم استخدام هذه الواجهة في الربيع ، ويمكن للطلاب المهتمين قراءة الكود المصدري. فيما يلي تطبيقان نموذجيان.
autowiredannotationbeanpostprocessor
Abstractautoproxycreator
MergedBeanDefinitionPostProcessor واجهة
تمر هذه الواجهة في heatbeandefinition ، والتي تسمح لنا بتعديل تعريف الفول. يستخدم AutuWiredannotationBeanPostProcessor هذه الطريقة للتحقق من الأعضاء الذين يحتاجون إلى حقنه.
BeanfactorypostProcessor (BFPP)
بالإضافة إلى BeanpostProcessor ، هناك نوع آخر من الأشياء التي يعرفها الجميع ، وهذا هو ، BeanfactoryPostProcessor
يعد BFPP مكونًا إضافيًا مهمًا لـ Beanfactory ويمكن تخصيصه باستخدام BeanDefinition. الفرق الرئيسي من BPP هو:
حسنًا ، بعد قوله كثيرًا ، دعونا نلقي نظرة على المخطط الانسيابي العام لإنشاء الفاصوليا في الربيع. يتم تمييز العقد الأكثر أهمية فقط هنا.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.