Spring Boot / الأساسي: التركيب وعقود HTTP / الدرس 1
بيئة Boot والبناء المُدار
اشرح ما تضيفه Spring Boot لتطبيق Java، وحدد عقداً قابلاً للتكرار للإصدار والاعتماديات والبدء قبل إضافة وظائف العمل.
في هذه الصفحة
أهداف الدرس
- تمييز Boot و Framework والحزم المبدئية وشيفرة التطبيق.
- تثبيت أساس متوافق للغة والاعتماديات.
- قراءة أمثلة البناء والبدء دون افتراض تنفيذها.
افصل الاصطلاحات من قرارات المجال
توفر Spring Boot اصطلاحات وإدارة اعتماديات وضبطاً تلقائياً وتغليفاً وتكاملاً تشغيلياً حول Spring Framework. لكنها لا تقرر صلاحية الطلب أو تفويض العميل أو جعل كل دالة معاملة. تجلب الحزمة المبدئية اعتماديات مترابطة، ويتفاعل الضبط مع الأصناف والخصائص والكائنات الموجودة؛ فميّز هذه المسؤوليات عند تفسير تكوين التطبيق.
تستهدف الدورة تطبيق Servlet على Spring Boot 3.5.16 و Spring Framework 6.2.19 و Java 17 وفق توثيق مُرقّم مراجع، دون ادعاء الأحدث. لا تخلط حزمة أو افتراض إصدار 4 مع أمثلة 3.5 لأن رابطاً عاماً انتقل إلى خط أحدث؛ فاختيار الإصدار جزء من قابلية تكرار المثال.
دع خط إصدار واحد يدير التوافق
يختار جزء Maven أب Boot وهدف Java 17، وتجلب web بنية Servlet MVC المختارة. ليس ذلك أمراً لتثبيت شيء في المشروع المشترك، ولم يُشغّل بناء أو خادم هنا. يحتاج المشروع الكامل أيضاً ترتيب المصادر والاختبارات وقرارات التطبيق وبيئة مستودع وبناء مضبوطة.
فضّل النسخ المدارة لمكونات Spring ما لم يوجد سبب توافق مراجع لتجاوزها. قد يسبب جمع نسخ Framework و Security و Hibernate اعتباطياً فشل ربط أثناء التشغيل رغم نجاح المصدر. احفظ رسم الاعتماد المحلول وهوية الأثر. ولا يثبت وجود Gradle عام أنه يحقق متطلبات خط Boot المقصود.
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.16</version>
</parent>
<groupId>training</groupId><artifactId>catalog</artifactId><version>1.0.0</version>
<properties><java.version>17</java.version></properties>
<dependencies>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
</project>
يختار XML الأب والإضافة المحددين. يفحص التحليل المحلي الصياغة لا حل الاعتماديات أو بدء الإطار.
اقرأ نقطة البدء كحد لتركيب المكونات
تجمع @SpringBootApplication التهيئة وتمكين الضبط التلقائي والمسح. ضعها في جذر حزمة مقصود ليجد المسح المكونات المطلوبة دون اجتياز غير المرتبط. يحتاج المدخل التالي الاعتماديات المحددة؛ وقد تنشئ run سياقاً ومستمعاً عند دمجها، ولذلك لا تُنفذ هنا كاختصار تدريب.
يحوي السياق كائنات مُدارة وأعمارها، وقد يهيئ أيضاً عميل قاعدة أو جدولة أو شيفرة بدء مخصصة. اختر سياقاً محدوداً أو شريحة إذا احتاج الاختبار التهيئة فقط. تختلف صحة البناء ونجاح البدء وجاهزية مسار العمل، ولا يغني أحدها عن الدليل على الآخر.
package training.catalog;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class CatalogApplication {
public static void main(String[] args) {
SpringApplication.run(CatalogApplication.class, args);
}
}
تحدد الجذر ولا تكتمل دون اعتماديات المشروع وضبط تشغيله؛ فلا ندعي تشغيلها.
افحص الشروط بدلاً من اعتبار الضبط سحراً
قد يتراجع الضبط التلقائي إذا وفر التطبيق كائناً أو غاب شرط، وقد يغير starter جديد شبكة الشروط أو تستبدل تهيئة مخصصة الافتراضات. افحص المسار والخصائص والتعريفات وتقرير الشروط في اختبار محلي مخول؛ ولا تعالج الخلل بتشغيل كل annotation أو استبعاد مكونات اعتباطية.
تضيف data-JPA توقعات استمرارية ولا تلزم لإعادة DTO ثابت. أبق سطح الاعتماد الأولي ضيقاً. قد يكشف غياب عنوان قاعدة بعد إضافة الاستمرارية معمارية غير مكتملة، لا مبرراً لتعطيل الضبط كله دائماً. يسبق فهم السبب اختيار الإصلاح.
احفظ دليل البناء والتنفيذ بصدق
احفظ نسخة المصدر و Boot/BOM وهدف المترجم والتشغيل والاعتماد الفعلي ومصادر الضبط وأمر الاختبار. لا تصف استجابة HTTP بأنها مرصودة إذا كانت عقداً مقترحاً فقط. تفحص الدورة ملفات مناسبة وتترجم نماذج مستقلة؛ وتبقى أجزاء الإطار والبناء والنشر غير قابلة للتشغيل ما لم تختبر فعلاً بنطاق معلن.
لا تحتاج الأمثلة قاعدة المشروع أو اعتماداً سرياً أو خدمة أو مستمع شبكة. ستبين الدروس اختبارات محدودة للويب والتهيئة دون افتراض منفذ حي. الغاية تركيب مفهوم ودليل صادق، لا تراكم annotations يبدو كخدمة ناجحة دون تحقق.
الأخطاء الشائعة وإصلاحها
NoSuchMethodError after changing a dependency
- لماذا يحدث؟
- لم تعد المكتبات متوافقة مع الخط المُدار.
- كيف تصلحه؟
- افحص الرسم الفعلي واستعد مجموعة متوافقة مراجعة.
- كيف تتجنب تكراره؟
- وثق BOM والتجاوزات.
لم يُكتشف مكوّن.
- لماذا يحدث؟
- خرجت حزمته أو تهيئته عن الجذر المقصود.
- كيف تصلحه؟
- ضعه أو استورده عمداً لا بتوسيع عشوائي.
- كيف تتجنب تكراره؟
- اختبر حد التركيب.
عُد البناء خدمة جاهزة.
- لماذا يحدث؟
- اختلطت الترجمة بالبدء وجاهزية العمل.
- كيف تصلحه؟
- تحقق من كل حد باختبار مناسب.
- كيف تتجنب تكراره؟
- افصل المقصود من المرصود.
اختبر فهمك
1. لماذا قد تكسر إضافة استمرارية تطبيق MVC بسيطاً؟
اعرض الحل المشروح
تغير المسار وقد تفعل ضبطاً يحتاج مصدر بيانات وكيانات ومدير معاملة. أضفها لتصميم مقصود واختبر السياق، ولا تستبعد الفشل عشوائياً لتبدو البداية ناجحة.
2. أي نسخة تحكم مثال 3.5 إذا عرض الرابط العام 4.x؟
اعرض الحل المشروح
يحكم المشروع المثبت واعتمادياته. استخدم توثيقه المُرقّم وتحقق من الواجهات عند الترقية؛ ولا يجعل الرابط الأحدث حزمة خاصة بـ 4 متاحة في 3.5.
أهم ما تعلمته
- تركب اصطلاحات Boot التطبيق وتبقى عقود المجال صريحة.
- ثبت Java وخط اعتماديات متوافقاً.
- الجزء المقترح ليس دليل تشغيل مرصوداً.