نحن نعلم أن وظيفة التكوين التلقائي لأحذية الربيع يمكن أن تحدد تكوين الربيع الذي يجب استخدامه والذي لا ينبغي استخدامه وفقًا للمواقف المختلفة. على سبيل المثال:
كيف تحقق هذا؟ والسبب هو أنه يستخدم التكوين الشرطي لـ Spring ، والذي يسمح بتكوينات في التطبيق ، ولكن يتم تجاهل هذه التكوينات قبل استيفاء شروط معينة.
لتنفيذ التكوين الشرطي ، نحتاج إلى استخدام التعليق التوضيحي الشرطي التقليدي. بعد ذلك ، دعنا نكتب مثالًا صغيرًا لتجربة كيفية عمل Condternal.
1. مثال صغير تقليدي
نحن نعلم أن الأمر لعرض القائمة في Windows هو dir ، في حين أن الأمر لعرض القائمة في نظام Linux هو LS. بناءً على التكوين الشرطي ، يمكننا تحقيق قيم مختلفة ضمن أنظمة تشغيل مختلفة.
1. تعريف شروط الحكم
1.) شروط القرار تحت Windows
/** * قم بتنفيذ واجهة حالة الربيع ، وتجاوز طريقة Matches () ، وإرجاع True إذا كان نظام التشغيل Windows * */Public Class WindowsCondition يشرف الشرط {Override Public Boolean Matches (ContinterConxt Context ، annotatedTypeMetadata Metadata) {return context.getenvironment (). }}2.) شروط القرار تحت Linux
/** * تنفيذ واجهة حالة الربيع ، وتجاوز طريقة المطابقات () ، وإرجاع صحيح إذا كان نظام التشغيل Linux * */public class linuxcondition يطبق الشرط {override public boolean matches (continctext scontext ، annotatedtypemetadata metadata) {return context.getenvriation (). }}2. فصول الفول تحت أنظمة مختلفة
1.) واجهة
الواجهة العامة قوائم {show string showlistline () ؛}2.) فئة الفول تحت النوافذ
الفئة العامة WindowsListService تنفذ قوائم SileService {Override public string showlistline () {return "dir" ؛ }}3.) فئة الفول تحت Linux
الطبقة العامة linuxlistservice تنفذ قوائم servervice {Override public string showlistline () {return "ls" ؛ }}3. فئة التكوين
ConfigurationPublic Class ClasseConfig { / *** تمرير التعليقات التوضيحية @Conditional ، وإرجاع مثيل WindowsListservice إذا كان يلبي شروط Windows** / beanconditional (windowscondition.class) قوائم عامة windonwslistervice () {return new windowslistervice () ؛ } / *** تمرير التعليق التوضيحي للتقليدي ، وأرجع مثيل Linuxlistservice إذا كان يفي بشروط Linux** / @beanconditional (linuxcondition.class) القوائم العامة linuxlistervice () {return linuxlistervice () ؛ }}4. فئة الاختبار
ظروف الفئة العامة {public static void main (string [] args) {enrotationConfigPlicationContext Context = New endationConfigapplicationContext (inctionConfig.class) ؛ Sistservice listservice = context.getBean (listservice.class) ؛ System.out .println (context.getenvironment (). }}5. قم بتشغيل فئة الاختبار ، لأنني على نظام Windows 7 ، والنتيجة هي
أوامر القائمة تحت نظام Windows 7 هي: دير
إذا كان لك على Linux ، فستكون النتيجة
أوامر القائمة تحت نظام Linux هي: LS
2. التكوين الشرطي لحذاء الربيع
في مشروع Boot Spring ، ستكون هناك حزمة جرة تسمى Spring-Boot-Autoconfigure
يتم تنفيذ التكوين الشرطي في هذه الجرة. يستخدم التعليقات التوضيحية الشرطية التالية ، والتي تبدأ بـ conditional:
بعد ذلك ، دعونا نلقي نظرة على عمود رمز المصدر:
خذ jdbctemplateautoconfiguration كمثال ، أنه يحتوي على هذا الرمز:
bean @primaryconditionalonmissingbean (jdbcoperations.class) public jdbctemplate jdbctemplate () {return new jdbctemplate (this.datasource) ؛ }سيتم تهيئة حبة JDBCTEMPLATE فقط عندما لا يكون هناك JDBCOPERS (إذا نظرت إلى الكود المصدري لـ JDBCTEMPLATE ، ستجد أن فئة JDBCTEMPLES تنفذ واجهة JDBCOPERATIONS).
بناءً على المحتوى أعلاه ، يمكننا قراءة الكود المصدري المتعلق بالتكوين التلقائي.
لخص
ما سبق هو التكوين التلقائي لـ @Conditional و Spring Boot في SPRING BOOT الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!