انتقل إلى المحتوى الرئيسي

الفصل 1: Spring Initializr

مقدمة​

Spring Initializr هو مولد مشاريع ويب يتيح لك إنشاء مشروع Spring Boot بسرعة مع التبعيات والتكوين الأساسي اللازم. إنه نقطة الانطلاق الموصى بها لأي مشروع Spring Boot جديد.

أهداف الفصل​

في نهاية هذا الفصل، ستكون قادرًا على:

  • استخدام Spring Initializr لإنشاء مشاريع Spring Boot
  • فهم الخيارات المختلفة للتكوين
  • اختيار التبعيات المناسبة لمشروعك
  • توليد واستيراد مشروع في بيئة التطوير المتكاملة الخاصة بك

ما هو Spring Initializr؟​

التعريف​

Spring Initializr هو أداة تمهيد تولد الهيكل الأساسي لمشروع Spring Boot. يقوم بـ:

  • إنشاء هيكل الدلائل لـ Maven أو Gradle
  • توليد ملف pom.xml أو build.gradle مع التبعيات
  • إضافة الفئة الرئيسية مع @SpringBootApplication
  • تكوين ملفات الموارد الأساسية

الوصول إلى Spring Initializr​

هناك عدة طرق للوصول إلى Spring Initializr:

  1. واجهة الويب: https://start.spring.io/
  2. تكامل IDE: IntelliJ IDEA، VS Code مع ملحقات Spring
  3. Spring CLI: سطر الأوامر
  4. API REST: لأتمتة العمليات

واجهة الويب لـ Spring Initializr​

عنوان URL للوصول​

https://start.spring.io/

الأقسام الرئيسية​

الواجهة مقسمة إلى عدة أقسام:


تكوين المشروع​

1. Project Type (نوع المشروع)​

الخيارات المتاحة:

النوعالوصفالاستخدام
Mavenأداة بناء XMLموصى به للمبتدئين، موثق بشكل واسع
Gradleأداة بناء Groovy/Kotlin DSLأكثر حداثة، أسرع، صياغة مختصرة

التوصية: Maven لهذا الدورة (أكثر شيوعًا في صناعة Java)

2. Language (اللغة)​

الخيارات المتاحة:

اللغةالوصفالمستوى
Javaاللغة الرئيسية لـ Springموصى به
Kotlinلغة حديثة من JetBrainsمتقدم
Groovyلغة ديناميكيةأقل شيوعًا

التوصية: Java (لغة هذا الدورة)

3. Spring Boot Version​

صيغة الإصدار: X.Y.Z

  • X: إصدار رئيسي (تغييرات كبيرة)
  • Y: إصدار فرعي (ميزات جديدة)
  • Z: إصدار تصحيح (إصلاحات أخطاء)

مثال:

3.2.0

أنواع الإصدارات:

النوعاللاحقةالمعنىالاستخدام
Releaseلا يوجدإصدار مستقرللإنتاج
Snapshot-SNAPSHOTإصدار قيد التطويرللتطوير فقط
Milestone-M1, -M2إصدار تجريبيللاختبارات
Release Candidate-RC1مرشح للإصدارللاختبارات النهائية

التوصية: اختر دائمًا أحدث إصدار مستقر (بدون لاحقة)


بيانات المشروع​

هيكل البيانات​

1. Group​

التعريف: معرف المنظمة أو الفريق (اتفاقية Maven)

الصيغة: اسم النطاق المعكوس

أمثلة:

com.example          # مثال عام
com.inskillflow # منظمة inskillflow
org.springframework # إطار عمل Spring

الاتفاقية: استخدم نطاقك المعكوس أو com.example للتمارين

2. Artifact​

التعريف: معرف فريد للمشروع

الصيغة: حروف صغيرة، شرطات للمسافات

أمثلة:

greeting-app
user-management-service
e-commerce-backend

الاتفاقية: اسم وصفي بصيغة kebab-case

3. Name​

التعريف: الاسم المعروض للمشروع

الصيغة: اسم قابل للقراءة البشرية

أمثلة:

Greeting Application
User Management Service
E-Commerce Backend

4. Description​

التعريف: وصف قصير للمشروع

مثال:

تطبيق Spring Boot لإدارة التحيات

5. Package Name​

التعريف: حزمة Java الجذرية للمشروع

الصيغة: يتم توليدها تلقائيًا: {group}.\{artifact\}

مثال:

com.example.greeting

الهيكل الناتج:

src/main/java/com/example/greeting/
├── GreetingApplication.java
├── controller/
├── service/
└── model/

6. Packaging​

الخيارات المتاحة:

النوعالوصفالاستخدام
JARJava Archive (مستقل)تطبيقات Spring Boot مع خادم مدمج
WARWeb Archiveنشر على خادم خارجي (Tomcat، إلخ)

التوصية: JAR (Spring Boot يدمج خادمه الخاص)

الفرق:

7. Java Version​

الإصدارات المدعومة من Spring Boot 3.x:

الإصدارالدعمالتوصية
Java 17LTSموصى به
Java 21LTSحديث جدًا
Java 11LTS قديمغير مدعوم من Spring Boot 3.x

ملاحظة هامة: يتطلب Spring Boot 3.x الحد الأدنى Java 17


إدارة التبعيات​

ما هي التبعية؟​

التبعية (أو dependency) هي مكتبة خارجية يستخدمها مشروعك.

Starters Spring Boot​

يستخدم Spring Boot مفهوم "starters" - تبعيات مجمعة.

صيغة starter:

spring-boot-starter-{technologie}

فئات التبعيات​

1. Web​

Starterالوصفالاستخدام
Spring WebREST APIs، Spring MVCتطبيقات ويب REST
Spring Reactive WebWebFlux (تفاعلي)تطبيقات عالية القابلية للتوسع

2. SQL (قواعد البيانات العلائقية)​

Starterالوصف
Spring Data JPAORM مع Hibernate
JDBC APIوصول SQL منخفض المستوى
MyBatis Frameworkربط SQL/Java

3. NoSQL​

Starterالوصف
Spring Data MongoDBقاعدة بيانات مستندات
Spring Data Redisذاكرة تخزين مؤقت في الذاكرة
Spring Data Elasticsearchبحث نصي كامل

4. الأمان​

Starterالوصف
Spring Securityالمصادقة والتفويض
OAuth2 Clientتسجيل الدخول الاجتماعي (Google، Facebook)
OAuth2 Resource ServerAPI محمي

5. SQL Drivers​

Driverقاعدة البيانات
PostgreSQL DriverPostgreSQL
MySQL DriverMySQL/MariaDB
H2 Databaseقاعدة بيانات في الذاكرة (للاختبارات)
Oracle DriverOracle Database

6. I/O​

Starterالوصف
Validationالتحقق من البيانات (@Valid)
Spring Web Servicesخدمات ويب SOAP
Spring for Apache Kafkaمراسلة Kafka

7. أدوات المطورين​

Toolالوصفالاستخدام
Spring Boot DevToolsإعادة تحميل تلقائيالتطوير
Lombokتقليل كود boilerplateالإنتاجية
Spring Configuration Processorإكمال تلقائي للتكويناتالتطوير

تبعيات لمشروع REST بسيط​

لتطبيق REST أساسي، اختر:

✅ Spring Web
✅ Spring Boot DevTools

تبعيات لتطبيق كامل​

لتطبيق مع قاعدة بيانات:

✅ Spring Web
✅ Spring Data JPA
✅ PostgreSQL Driver (أو آخر)
✅ Validation
✅ Spring Boot DevTools
✅ Lombok (اختياري)

التوليد والتنزيل​

خيارات التوليد​

الأزرار المتاحة:

  1. EXPLORE (Ctrl + Space)

    • معاينة هيكل المشروع
    • رؤية محتوى pom.xml
    • التحقق من الملفات المولدة
  2. SHARE

    • توليد رابط قابل للمشاركة
    • مشاركة التكوين مع الفريق
  3. GENERATE (Ctrl + Enter)

    • تنزيل المشروع كملف ZIP
    • جاهز لفك الضغط والاستيراد

هيكل ZIP المولد​

greeting-app.zip
└── greeting/
├── .mvn/ # Wrapper Maven
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/greeting/
│ │ │ └── GreetingApplication.java
│ │ └── resources/
│ │ ├── static/ # ملفات ثابتة (CSS، JS، صور)
│ │ ├── templates/ # قوالب (Thymeleaf)
│ │ └── application.properties
│ └── test/
│ └── java/
│ └── com/example/greeting/
│ └── GreetingApplicationTests.java
├── .gitignore
├── mvnw # Maven wrapper (Unix)
├── mvnw.cmd # Maven wrapper (Windows)
├── pom.xml # تكوين Maven
└── HELP.md

الاستيراد في بيئة التطوير المتكاملة​

الخيار 1: Visual Studio Code​

الخطوات:

  1. فك ضغط الملف ZIP
  2. VS Code → File → Open Folder
  3. اختر المجلد greeting
  4. انتظر الاستيراد التلقائي لـ Maven
  5. الملحقات المطلوبة:
    • Extension Pack for Java
    • Spring Boot Extension Pack

الخيار 2: IntelliJ IDEA​

الخطوات:

  1. فك ضغط الملف ZIP
  2. IntelliJ → File → Open
  3. اختر المجلد greeting
  4. يكتشف IntelliJ المشروع Maven تلقائيًا
  5. انتظر الفهرسة

الخيار 3: Eclipse/Spring Tool Suite (STS)​

الخطوات:

  1. فك ضغط الملف ZIP
  2. Eclipse → File → Import
  3. Maven → Existing Maven Projects
  4. اختر المجلد greeting
  5. Finish

بدائل لواجهة الويب​

1. Spring Initializr في VS Code​

التثبيت:

  • الملحق: Spring Initializr Java Support

الاستخدام:

  1. Ctrl + Shift + P
  2. اكتب: "Spring Initializr: Create a Maven Project"
  3. اتبع التعليمات

2. Spring CLI​

التثبيت:

# macOS
brew install spring-boot

# Linux/Windows
# تحميل من: https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-installing-the-cli

الاستخدام:

spring init \
--dependencies=web,data-jpa,postgresql \
--name=greeting \
--group-id=com.example \
--artifact-id=greeting \
greeting-app

3. API REST لـ Spring Initializr​

عنوان URL الأساسي:

https://start.spring.io

مثال باستخدام curl:

curl https://start.spring.io/starter.zip \
-d dependencies=web,data-jpa \
-d name=greeting \
-d groupId=com.example \
-d artifactId=greeting \
-o greeting.zip

تمارين عملية​

التمرين 1: إنشاء مشروع بسيط​

الهدف: إنشاء مشروع REST بسيط

التعليمات:

  1. اذهب إلى https://start.spring.io/
  2. قم بتكوين:
    • النوع: Maven
    • Java: 17
    • المجموعة: com.example
    • العنصر: hello-rest
  3. أضف: Spring Web
  4. قم بالتوليد والتنزيل
  5. استورد في VS Code

التمرين 2: إنشاء مشروع مع قاعدة بيانات​

الهدف: إنشاء مشروع مع JPA

التعليمات:

  1. اذهب إلى https://start.spring.io/
  2. قم بتكوين:
    • النوع: Maven
    • Java: 17
    • المجموعة: com.example
    • العنصر: user-manager
  3. أضف:
    • Spring Web
    • Spring Data JPA
    • PostgreSQL Driver
    • Validation
  4. قم بالتوليد واستكشف pom.xml

التمرين 3: تحليل pom.xml​

الهدف: فهم التبعيات المولدة

التعليمات:

  1. قم بتوليد مشروع مع Spring Web
  2. افتح pom.xml
  3. حدد:
    • الوالد Spring Boot
    • starter الويب
    • المكون الإضافي Maven Spring Boot
  4. قم بإدراج جميع التبعيات الانتقالية

أسئلة مراجعة​

  1. ما هو Spring Initializr؟

  2. ما الفرق بين Maven وGradle؟

  3. ماذا يعني "starter" في Spring Boot؟

  4. ما هي الاتفاقية لـ Group ID؟

  5. لماذا تختار JAR بدلاً من WAR لـ Spring Boot؟

  6. ما هو الحد الأدنى لإصدار Java لـ Spring Boot 3.x؟

  7. ما هو الغرض من Spring Boot DevTools؟

  8. ما هي التبعية اللازمة لإنشاء REST APIs؟


ملخص الفصل​

النقاط الرئيسية​

  • Spring Initializr يولد بسرعة مشاريع Spring Boot
  • متاح عبر الويب، IDE، CLI أو API
  • التكوين في 3 أقسام: المشروع، البيانات، التبعيات
  • "starters" تجمع التبعيات المتناسقة
  • JAR هو التغليف الموصى به لـ Spring Boot
  • Java 17+ مطلوب لـ Spring Boot 3.x

أفضل الممارسات​

  • استخدام إصدارات مستقرة من Spring Boot
  • اختيار التبعيات الضرورية فقط
  • اتباع اتفاقيات التسمية لـ Maven
  • استخدام DevTools في التطوير
  • إصدار الكود منذ الإنشاء

الخطوات التالية​

في الفصل التالي، سنستكشف بالتفصيل:

الفصل 2: هيكل مشروع Spring Boot

  • تنظيم الحزم
  • دور كل ملف
  • اتفاقيات التسمية
  • الهندسة المعمارية الطبقية

العودة إلى الوحدة 2