في حاوية الربيع ، بالإضافة إلى إنشاء تبعيات من خلال <frem> ، هناك بعض العلاقات الخاصة بين الفاصوليا.
1 الميراث
في مبدأ البرمجة الموجهة للكائنات ، عندما يكون لدى فئات متعددة نفس الأساليب والخصائص ، يمكن تقديم الفئة الأصل للتخلص من الكود المكرر. في حاوية الربيع ، إذا كان لدى الفاصوليا المتعددة نفس معلومات التكوين ، فيمكننا تحديد الفاصوليا الأصل ، بحيث يرث الفاصوليا الطفل تلقائيًا معلومات التكوين الخاصة بالفاصوليا الأصل.
<!-Parent Bean-> <bean id = "mortctionbook" p: name = "veil" upplication = "true"> </bean> <!-child bean-> <bean id = "book1" p: press = "chongqing publishing house" parent = "prossectionbook"/> <bean id = "book2" p: press = shanghai translation home
بشكل عام ، تتمثل وظيفة الفول الأصل في تبسيط تكوين فول الطفل ، لذلك يتم ضبطه على فئة مجردة (Abstract = "True") ؛ إذا لم يتم ضبط الفول الأصل على فئة مجردة هنا ، فسوف تقوم حاوية الربيع بتسهيل الفول الأصلي.
2 قبل الاعتماد
بشكل عام ، يتم استخدام <ff> لإنشاء تبعيات بين الفاصوليا. حاويات الربيع مسؤولة عن إدارة هذه العلاقات. عند إنشاء إنشاء حبة ، تضمن الحاوية أن جميع الفاصوليا تعتمد على الفول قد أكملت أعمال التهيئة.
ولكن في بعض الحالات ، فإن التبعيات بين الفاصوليا ليست واضحة.
لنفترض في هذا السيناريو ، يقوم النظام بتعيين بعض معلمات النظام (مثل فترة صحة كلمة المرور ، سواء لتمكين المراقبة ، وما إلى ذلك) ، ويتم استخدام معلمات بدء التشغيل هذه للتحكم في منطق تشغيل النظام. نستخدم فئة إعداد لتمثيل هذه المعلمات:
إعدادات الفئة العامة { / ** * وقت انتهاء صلاحية كلمة المرور (الوحدة: أيام) * / static static int pass_timeout = 30 ؛ / *** ما إذا كان لتمكين المراقبة*/ boolean الثابتة العامة is_monitor = خطأ ؛}هنا قمنا بتعيين القيم الافتراضية لهذه المعلمات. يحتوي النظام أيضًا على الواجهة الخلفية الإدارية ، حيث يمكن للمسؤولين ضبط معلمات النظام هذه وحفظها في قاعدة البيانات. لذلك ، عندما يبدأ التطبيق ، يجب تحميل معلمات النظام هذه من قاعدة البيانات:
نظام الطبقة العامة {system () {init () ؛ } /*** التهيئة* /private void init () {// لنفترض أن هذه القيم تأتي من إعدادات قاعدة البيانات. pass_timeout = 20 ؛ الإعدادات. is_monitor = true ؛ }}يحتوي النظام على مدير انتهاء صلاحية كلمة المرور ، والذي سيقوم بإنشاء مهمة موقوتة لاكتشاف ما إذا كانت كلمة المرور تنتهي بناءً على [عدد الأيام التي تنتهي فيها كلمة المرور] في معلمات النظام:
فئة عامة passmanager {int timeout ؛ Public PassManager () {timeout = settings.pass_timeout ؛ timertask () ؛ } / *** مهمة توقيت للكشف عن ما إذا كانت كلمة المرور تنتهي* / private void timertask () {} public int getTimeOut () {return timeout ؛ }}على الرغم من أن PassManager لا يعتمد مباشرة على الإعدادات ، إلا أنه من المنطقي ، يتوقع PassManager أن يقوم النظام بتحميل معلمات النظام المهيئة قبل البدء.
في فصل الربيع ، يمكنك تحديد حبة ما قبل الاعتماد على الفاصوليا من خلال الخاصية التي تعتمد على التأكد من أن حبة ما قبل الاعتماد على هذه الفاصوليا قد تم تحميلها قبل الاستئصال.
<bean id = "system"/> <bean id = "manager" تعتمد على = "النظام"/>
إذا كانت البادئة تعتمد على فاصوليا متعددة ، فيمكن تكوين اسم الفاصوليا عن طريق الفواصل أو المسافات أو المنقص.
3 QUOTE ID
لنفترض أن الفول يحتاج إلى الرجوع إلى قيمة الهوية (Beanname) للفاصوليا الأخرى. يستخدم هذا عمومًا للحصول على حبة أخرى من خلال طريقة GetBean (Beanname) في الفول أثناء وقت التشغيل.
يمكن تكوينه على هذا النحو:
<bean id = "uptor"/> <bean id = "book" p: uptorid = "effect"/>
سمة مؤلفة إضافية في الكتاب:
/** * مؤلف معرف الفول */private string upultId ؛
على الرغم من أنه يمكن تعيينه في هذا النموذج الحرفي ، لا توجد علاقة مرجعية حقيقية بين الاثنين. لذلك ، سيتم العثور على خطأ التكوين فقط عند استدعاء المكالمة المحددة.
يوفر Spring علامة عنصر <idref> ، التي تشير إلى اسم حبة أخرى من خلال <idref>. وبهذه الطريقة ، عندما تبدأ الحاوية ، سيتم التحقق من صحة العلاقة المرجعية ، ويمكن العثور على معلومات التكوين غير الصحيحة مقدمًا.
<bean id = "defult10"/> <bean id = "book10"> <property name = "eventiD"> <idref bean = "defult10"/> </property> </bean>
في حالة حدوث خطأ في التكوين ، سيتم إلقاء BeanDefinitionStoreException عند بدء حاوية الربيع ، وسيجد محلل XML الخاص بـ IDE أيضًا أخطاء مرجعية مسبقًا ، لذلك يوصى باستخدام علامة العنصر <IDREF> للرجوع إلى المعرف.
لخص
ما سبق هو العلاقة الخاصة بين حبوب الربيع التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، يرجى ترك رسالة لي. سوف يرد المحرر إليك في الوقت المناسب!