مقدمة
في عملنا الفعلي ، نواجه دائمًا مثل هذا الشرط. عندما يبدأ المشروع ، نحتاج إلى القيام ببعض عمليات التهيئة ، مثل تهيئة تجمع مؤشرات الترابط ، وتحميل شهادة التشفير مقدمًا ، وما إلى ذلك. سأقدم لك اليوم أداة التمهيد الربيعي ، والتي تم تصميمها خصيصًا لمساعدتك في حل تشغيل مورد التهيئة لبدء تشغيل المشروع.
هذا القطع الأثرية هي commandlinerunner. سيتم تنفيذ مكون واجهة CommandLinerUnner قبل SpringApplication.Run () بعد تهيئة جميع سبرينج بيانز ، وهو أمر مناسب للغاية لبعض أعمال تهيئة البيانات في بداية بدء التشغيل.
بعد ذلك ، سوف نستخدم الحالات لاختبار كيفية استخدامها. قبل الاختبار ، أضف سطرين من مطالبات الطباعة إلى فئة بدء التشغيل لتسهيلنا لتحديد توقيت تنفيذ CommandLinerunner.
springbootapplicationpublicpublic CommandLinerUnnerApplication {public static void main (string [] args) {system.out.println ("الخدمة للبدء.") ؛ springapplication.run (commandLinerUnnerApplication.class ، args) ؛ System.out.println ("بدأت الخدمة.") ؛ }}بعد ذلك ، نقوم بإنشاء فئة مباشرة يرث CommandLinerunner وتنفذ طريقة Run ().
@componentpublic class Runner تنفذ commandlerNerUnner {Override public void run (String ... args) rems {system.out.println ("The Runner START TOLISTER ...") ؛ }}نطبع بعض المعلمات في طريقة Run () لمعرفة كيفية تنفيذها. بعد الانتهاء ، ابدأ المشروع للاختبار:
... الخدمة للبدء .____ __ _ /// / ___'_ __ _ (_) _ ____ _ / / / / (() / ___ | '_ |' _ | .__ || | _ | | _ | | _ | | _/__ ، | / / / / / / / ============================================= = / _ / _ / :: spring boot: : بدأ Tomcat على المنفذ (S): 8080 (http) مع مسار السياق '2018-04-21 22: 21: 34.710 info 27016 --- [main] com.neo.commandlinerunnernernericalication: بدأت المبدعة في البداية.
استنادًا إلى معلومات الطباعة الخاصة بوحدة التحكم ، يمكننا أن نرى أن الطريقة في CommandLinerUnner سيتم تنفيذها بعد تحميل حاوية التمهيد الربيع ، وسيتم بدء المشروع بعد اكتمال التنفيذ.
إذا احتجنا إلى تهيئة العديد من الموارد عند بدء تشغيل الحاوية ويتم طلب الموارد الأولية مع بعضنا البعض ، فكيف يمكننا التأكد من ترتيب تنفيذ من مختلف الأوامر؟ يوفر SPRING BOOT أيضًا حلاً. وهذا هو لاستخدام التعليق التوضيحي order.
نقوم بإنشاء فئتين تنفيذ اثنين من CommandLinerunner لاختبار:
فئة التنفيذ الأولى:
@component @order (1) public orderrunner1 تنفذ commandLinerUnner {Override public void run (string ... args) رمي الاستثناء {system.out.println ("orderrunner1 يبدأ التهيئة ...") ؛ }}فئة التنفيذ الثانية:
@component @order (2) فئة عامة OrderRunner2 تنفذ commandleerUnner {Override public void run (string ... args) rems {system.out.println ("orderrunner2 تبدأ في تهيئة ...") ؛ }}بعد اكتمال الإضافة ، أعد تشغيل ومراقبة ترتيب التنفيذ:
... الخدمة للبدء. ____ _ __ _ //// ___'_ __ _ (_) _ __ __ / / / / (() / ___ | '_ |' _ | | / / // ___) | | | | | | | | | | | | | | || (_ | |)))) '| ____ | .__ || | _ | | _ | | _/__ ، | / / / / / / ======================================== ___ / = / _ // :: Spring Boot :: (v2.0.0.Release) ... 2018-04-21 22: 21: 34.706 info 27016 --- بدأ Tomcat على المنفذ (المنفذ): 8080 (http) مع مسار السياق '2018-04-21 22: 21: 34.710 info 27016 --- [main] com.neo.commandlinerUnnernernernerner. ابدأ في التهيئة ... بدأت الخدمة.
من خلال إخراج وحدة التحكم ، وجدنا أن فئة التنفيذ التي تضيف التعليق التوضيحي order يتم تنفيذها أولاً ، وأصغر القيمة في order () ، وتبدأ في وقت مبكر.
في الممارسة العملية ، يمكن تحقيق نفس الغرض باستخدام ApplicationRunner ، وهناك فرق كبير بين الاثنين.
نموذج رمز: https://github.com/ityouknow/spring-cloud-examples (التنزيل المحلي)
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.