في مشاركتي السابقة “مقدمة إلى سبرينغ بوت” ، قمنا بمناقشة أساسيات سبرينغ بوت. الآن سنناقش “ما هي المكونات الرئيسية لسبرينغ بوت” و “كيف يعمل سبرينغ بوت تحت الغطاء”.
المكونات الرئيسية لإطار عمل سبرينغ بوت
يحتوي إطار عمل سبرينغ بوت على أربعة مكونات رئيسية.
- بدايات سبرينغ بوت
- مُكوِّن تكوين ذاتي لسبرينغ بوت
- واجهة سطر الأوامر لسبرينغ بوت
- مشغل سبرينغ بوت
ملاحظة:- بالإضافة إلى هذه المكونات الأربعة الرئيسية ، هناك مكونين آخرين لسبرينغ بوت:
- مُبتكِر سبرينغ
- بيئات تطوير سبرينغ بوت
لبدء مشاريع سبرينغ بوت الجديدة بسرعة ، يمكننا استخدام واجهة الويب “Spring Initializr”. رابط Spring Initializr: https://start.spring.io. لدينا العديد من بيئات تطوير سبرينغ بوت مثل بيئة تطوير إكليبس ، برنامج IntelliJ IDEA ، مُجموعة أدوات Spring STS وما إلى ذلك. سنناقش هاتين المكونتين في المشاركات القادمة. الآن سنناقش هذه المكونات الأربعة لسبرينغ بوت واحدة تلو الأخرى بالتفصيل.
بداية Spring Boot
بداية Spring Boot هي أحد الميزات الرئيسية أو المكونات الرئيسية لإطار Spring Boot. المسؤولية الرئيسية لبداية Spring Boot هي دمج مجموعة من التبعيات الشائعة أو المتعلقة في تبعيات واحدة. سنستكشف هذا البيان بالتفصيل مع مثال واحد. على سبيل المثال، إذا أردنا تطوير تطبيق ويب Spring باستخدام خادم الويب Tomcat. في هذه الحالة، نحتاج إلى إضافة التبعيات الحد الأدنى التالية في ملف pom.xml الخاص بمافن الخاص بك أو ملف build.gradle الخاص بالترميز المناسب
- ملف جر النواة الخاص بـ Spring (spring-core-xx.jar)
- ملف جر الويب الخاص بـ Spring (spring-web-xx.jar)
- ملف جر MVC الويب الخاص بـ Spring (spring-webmvc-xx.jar)
- ملف جر السيرفلت (servlet-xx.jar)
إذا أردنا إضافة بعض الأشياء المتعلقة بقواعد البيانات، فعلينا إضافة تبعيات ذات صلة بقاعدة البيانات مثل ملف جر JDBC الخاص بـ Spring، ملفات جر ORM الخاصة بـ Spring، ملف جر المعاملات الخاص بـ Spring الخ
- ملف جر JDBC الخاص بـ Spring (spring-jdbc-xx.jar)
- ملف جر ORM الخاص بـ Spring (spring-orm-xx.jar)
- ملف جر المعاملات الخاص بـ Spring (spring-transaction-xx.jar)
نحتاج إلى تحديد الكثير من التبعيات في ملفات البناء الخاصة بنا. إنه مهمة مملة ومرهقة للمطور. ويزيد أيضًا من حجم ملف البناء الخاص بنا. ما هو الحل لتجنب تحديد التبعيات الكثيرة في ملفات البناء الخاصة بنا؟ الحل هو مكون Spring Boot Starter. يقوم مكون Spring Boot Starter بتجميع جميع الملفات المرتبطة في ملف واحد حتى نتمكن من إضافة تبعية ملف JAR واحدة فقط إلى ملفات البناء الخاصة بنا. بدلاً من إضافة الملفات المذكورة أعلاه الأربعة إلى ملف البناء الخاص بنا، يجب علينا إضافة ملف JAR واحد فقط: ملف JAR “spring-boot-starter-web”. عندما نضيف تبعية ملف JAR “spring-boot-starter-web” إلى ملف البناء الخاص بنا، سيقوم إطار Spring Boot تلقائيًا بتنزيل جميع الملفات المطلوبة وإضافتها إلى فصلة العناصر في مشروعنا. بنفس الطريقة، يقوم ملف JAR “spring-boot-starter-logging” بتحميل جميع ملفات التبعية الخاصة به مثل “jcl-over-slf4j، jul-to-slf4j، log4j-over-slf4j، logback-classic” إلى فصلة العناصر في مشروعنا.
المزايا الرئيسية لمكون Spring Boot Starter
- يقلل مكون Spring Boot Starter من حاجة تحديد العديد من التبعيات ويبسط تبعيات بناء المشروع.
- يبسط مكون Spring Boot Starter تبعيات بناء المشروع.
هذا كل شيء بشأن مكون Spring Boot Starter. سنناقش بعض التفاصيل الإضافية مع بعض أمثلة Spring Boot في المشاركات القادمة.
موجه الضبط التلقائي لـ Spring Boot
مكون رئيسي آخر في إطار Spring Boot هو Spring Boot AutoConfigurator. يعتقد معظم نقاد منصة Spring IO (Spring Framework) أن “تطوير تطبيق يعتمد على Spring يتطلب الكثير من التكوين (إما تكوين XML أو تكوين بالتعليقات). فكيفية حل هذه المشكلة؟ الحل لهذه المشكلة يكمن في Spring Boot AutoConfigurator. المسؤولية الرئيسية لـ Spring Boot AutoConfigurator هي تقليل تكوين Spring. إذا قمنا بتطوير تطبيقات Spring في Spring Boot ، فلن نحتاج إلى تحديد تكوين XML ولا تقريبًا أي تكوين تعليقات. سيتولى مكون Spring Boot AutoConfigurator توفير تلك المعلومات. على سبيل المثال ، إذا كنا نرغب في إعلان تطبيق Spring MVC باستخدام منصة Spring IO ، فإننا بحاجة إلى تحديد الكثير من تكوينات XML مثل العروض ومحللات العروض وما إلى ذلك. ولكن إذا استخدمنا إطار Spring Boot ، فلن نحتاج إلى تحديد تلك التكوينات XML. سيتولى Spring Boot AutoConfigurator ذلك. إذا استخدمنا ملف جرة “spring-boot-starter-web” في ملف بناء مشروعنا ، فسيقوم Spring Boot AutoConfigurator بحل عروض العروض ومحللات العروض وما إلى ذلك تلقائيًا. وأيضًا ، يقلل Spring Boot من تحديد تكوين التعليقات. إذا استخدمنا @SpringBootApplication التعليقة على مستوى الفئة ، فسيقوم Spring Boot AutoConfigurator تلقائيًا بإضافة جميع التعليقات المطلوبة إلى بيانات البايت للفئة الجافا. إذا قرأنا وثائق Spring Boot ، يمكننا العثور على التعريف التالي لـ @SpringBootApplication.
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
هذا هو، @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. هذا كل شيء عن مكون تكوين Spring Boot AutoConfigurate. سنناقش بعض التفاصيل الإضافية مع بعض أمثلة Spring Boot في المشاركات القادمة. ملاحظة:-
- ببساطة، يقلل مبدأ Spring Boot Starter من تبعيات البناء ويقلل مكون Spring Boot AutoConfigurator من تكوين Spring.
- كما ناقشنا أن مبدأ Spring Boot Starter لديه تبعية لمكون Spring Boot AutoConfigurator، يقوم مبدأ Spring Boot Starter تلقائيًا بتنشيط Spring Boot AutoConfigurator.
Spring Boot CLI
واجهة سطر الأوامر Spring Boot CLI(Command Line Interface) هي برنامج Spring Boot لتشغيل واختبار تطبيقات Spring Boot من سطر الأوامر. عند تشغيل تطبيقات Spring Boot باستخدام CLI، فإنه يستخدم داخليًا مكونات Spring Boot Starter و Spring Boot AutoConfigurate لحل جميع التبعيات وتنفيذ التطبيق. يمكننا حتى تشغيل تطبيقات الويب Spring بأوامر بسيطة من واجهة سطر الأوامر Spring Boot CLI. قدمت Spring Boot CLI أمرًا جديدًا بالاسم “spring” لتنفيذ السكربتات Groovy من سطر الأوامر. مثال على الأمر spring:
spring run HelloWorld.groovy
ها هو ملف HelloWorl.groovy ملف نصي Groovy. مثل أسماء ملفات المصدر في جافا تحتوي على امتداد *.java، فإن ملفات النصي في Groovy تحتوي على امتداد *.groovy. يُنفذ الأمر “spring” ملف HelloWorld.groovy ويُنتج الناتج. يتطلب مكون Spring Boot CLI العديد من الخطوات مثل تثبيت CLI، إعداد CLI، تطوير تطبيق بسيط لـ Spring Boot واختباره. لذا سنخصص مشاركة أخرى لمناقشته بالتفصيل مع بعض أمثلة Spring Boot. يرجى الرجوع إلى مشاركتي التالية حول Spring Boot CLI.
مكون Spring Boot Actuator
تقدم مكونات Spring Boot Actuator العديد من الميزات، لكن ميزتان رئيسيتان هما
- توفير نقاط نهاية الإدارة لتطبيقات Spring Boot.
- قياسات تطبيقات Spring Boot.
عند تشغيل تطبيق Spring Boot Web الخاص بنا باستخدام CLI، يوفر Spring Boot Actuator تلقائيًا اسم المضيف كـ “localhost” ورقم المنفذ الافتراضي كـ “8080”. يمكننا الوصول إلى هذا التطبيق باستخدام نقطة النهاية “https://localhost:8080/”. في الواقع، نستخدم أساليب طلب HTTP مثل GET و POST لتمثيل نقاط النهاية للإدارة باستخدام Spring Boot Actuator. سنناقش بعض التفاصيل الأخرى حول Spring Boot Actuator في المشاركات القادمة.
الأمور الداخلية لإطار Spring Boot
من الأفضل دائمًا فهم كيفية تقليل Spring Boot Framework لتبعيات البناء وتكوين Spring وما إلى ذلك. كيف يعمل Spring Boot تحت الغطاء. إذا كنت معتادًا على لغة برمجة Groovy ، فستعرف معظم الأشياء. في Groovy ، ليس علينا إضافة بعض الاستيرادات ولا حاجة لإضافة بعض التبعيات إلى مشروع Groovy. عندما نقوم بترجمة نصوص Groovy باستخدام مترجم Groovy (groovyc) ، سيقوم تلقائيًا بإضافة جميع عبارات الاستيراد الافتراضية ثم يقوم بترجمتها. بنفس الطريقة ، تحتوي لغة برمجة Groovy على حل معالجة تبعيات JAR لحل وإضافة جميع ملفات JAR المطلوبة إلى فئة مشروع Groovy. يستخدم Spring Boot Framework داخليًا Groovy لإضافة بعض الإعدادات الافتراضية مثل عبارات الاستيراد الافتراضية وطريقة main() للتطبيق. عند تشغيل نصوص Groovy من موجه الأوامر CLI ، يستخدم هذه الطريقة main() لتشغيل تطبيق Spring Boot.
Grape
عنب هو محرك قرار الاعتماد المضمن. عنب هو مدير اعتماد JAR مدمج في Groovy. يتيح لنا عنب إضافة تبعيات مستودع Maven بسرعة إلى فصل المشروع الرئيسي لتقليل تعريفات ملف البناء. يستلهم نموذج برمجة إطار Spring Boot أساسًا من نموذج برمجة Groovy. يعتمد إطار Spring Boot داخليًا على هاتين المكونتين الرئيسيتين: Groovy و Grape. يمكنك الرجوع إلى وثائق Grape https://docs.groovy-lang.org/latest/html/documentation/grape.html للحصول على مزيد من التفاصيل. هذا هو كل شيء حول مكونات وتفاصيل Spring. سنناقش هذه المكونات بتفصيل مع بعض أمثلة Spring Boot في المشاركات القادمة. إذا كان لديك أي استفسارات ، يرجى ترك تعليق.