تغيير الفاصوليا بعد تجهيز النظام دون تكوين صريح

StackOverflow https://stackoverflow.com//questions/12651713

  •  11-12-2019
  •  | 
  •  

سؤال

أنا على علم بحقيقة أن ترتيب تحميل الفول يتم تحديده ضمنيا من خلال التبعيات والتبعيات المتعدية.

تخيل أن لديك مجموعة من الفاصوليا المشروحة التي توفر لك نوعا من البيانات الوصفية التي تريد تطبيقها على مجموعة أخرى من أواريبانز.بحيث فقط بعد جمع كل البيانات الوصفية من الفاصوليا ن ، فقط بعد ذلك يمكنك نشر عملية أويربيانز.عادة ما تستخدم org.springframework.beans.factory.config.BeanPostProcessor لهذا النوع من الاشياء.كيفية التعامل مع النظام على الرغم من?أعتقد أنه حتى إعداد depends-on صراحة لا يكون لها الأسبقية على التبعيات فيما يتعلق بترتيب التحميل, حق?

هناك واجهة org.springframework.core.Ordered هذا يحدد فقط على ترتيب بينبوستبروسيسورس يجري تطبيقها ، ولكن ليس ترتيب الفاصوليا.

يمكنني استخدام org.springframework.beans.factory.config.BeanFactoryPostProcessor لكن تعريف الفول ليس لديه معلومات كافية قبل إنشاء مثيل الفول.على سبيل المثال beanDef.getBeanClass() إرجاع اسم فئة الفول وما إلى ذلك.

غير أن أي طريقة أخرى يمكن أن نفكر في كيفية القيام بما أريد ?

هل كانت مفيدة؟

المحلول 2

أنا حلها باستخدام org.springframework.beans.factory.config.BeanFactoryPostProcessor وتحميل الطبقات من قبل كلاسلوادر حتى أتمكن من استخدام التفكير للاستيلاء على الشروح.وأعتقد أنه لا ينبغي كسر أي شيء لأنه بعد ذلك عندما الربيع هو ستعمل كلاسلود الطبقات الفول كلاسلوادر يتحقق ما إذا كان يتم تحميل الطبقة بالفعل وإذا كان الأمر كذلك فإنه لا تحميله.وإلا فإنه يحملها.

نصائح أخرى

يمكنك:

أ) حقن جميع حبوب البيانات الوصفية الخاصة بك في BeanPostProcessor.

ب) اجعل المعالج اللاحق الخاص بك يجلب بنشاط جميع حبوب البيانات الوصفية من سياق التطبيق عند بدء التشغيل.

كل طريقة لها إيجابيات وسلبيات ، ولكن التأثير هو نفسه:بعد BeanPostProcessor بوستكونستروكشيون ، كل الفول الفوقية سيكون بالفعل بوستكونستروكتد أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top