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

الوحدة 5 - Spring Core: IoC و DI متقدم

مرحبًا بكم في الوحدة 5! 🎯​

لقد استخدمت حقن التبعيات في الوحدات السابقة، لكن هل تفهم حقًا كيف يعمل؟

هذه الوحدة تكشف لك الأسرار الداخلية لـ Spring وتجعلك مستقلاً في التعامل مع أي موقف لحقن التبعيات.


🎓 أهداف التعلم​

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

  1. ✅ شرح ما هو عكس التحكم (IoC)
  2. ✅ إتقان الأنواع الثلاثة لحقن التبعيات
  3. ✅ إنشاء وإدارة Beans في Spring
  4. ✅ استخدام النطاقات المناسبة (@Singleton, @Prototype)، إلخ.
  5. ✅ تكوين Spring باستخدام @Configuration و @Bean
  6. ✅ إدارة ملفات التعريف (dev، test، prod)

📚 المتطلبات المسبقة​

قبل بدء هذه الوحدة، يجب أن تكون قد:

  • ✅ أكملت الوحدات من 1 إلى 4
  • ✅ استخدمت الحقن عبر المنشئ في تدريباتك
  • ✅ فهمت بنية الطبقات الثلاث (Controller، Service، Repository)

إذا لم تكن هذه المتطلبات مستوفاة، عد إلى الوحدات السابقة!


🗺️ خطة الوحدة​

الجزء النظري (4 فصول)​

الفصل 1: عكس التحكم (IoC)​

المدة: 30 دقيقة

المحتوى:

  • ما هو IoC؟
  • مشكلة الترابط القوي
  • كيف يحل Spring هذه المشكلة
  • حاوية Spring (ApplicationContext)

لماذا هو مهم؟ فهم المبدأ الأساسي لـ Spring


الفصل 2: حقن التبعيات (DI)​

المدة: 45 دقيقة

المحتوى:

  • الأنواع الثلاثة للحقن (المنشئ، setter، الحقل)
  • لماذا يفضل الحقن عبر المنشئ
  • @Autowired, @Inject, @Resource
  • التبعيات الاختيارية

لماذا هو مهم؟ اختيار الطريقة الصحيحة للحقن


الفصل 3: Beans وسياق Spring​

المدة: 45 دقيقة

المحتوى:

  • ما هو Bean؟
  • @Component, @Service, @Repository, @Controller
  • @Bean و @Configuration
  • تسمية beans
  • @Qualifier و @Primary

لماذا هو مهم؟ إتقان إنشاء وإدارة كائنات Spring


الفصل 4: النطاقات والتكوين​

المدة: 45 دقيقة

المحتوى:

  • النطاقات: @Singleton, @Prototype
  • نطاقات الويب: @RequestScope, @SessionScope
  • تكوين Java مقابل XML
  • ملفات التعريف (@Profile) لـ dev/test/prod
  • @ComponentScan

لماذا هو مهم؟ التحكم في دورة الحياة والتكوين


الجزء العملي (3 تدريبات)​

TP5.1: حقن التبعيات المتقدم​

المدة: 1h30

الهدف: إتقان الأنواع المختلفة للحقن

ستقوم بإنشاء:

  • خدمات متعددة بطرق حقن مختلفة
  • إدارة التبعيات الدائرية
  • استخدام @Qualifier لاختيار التنفيذ

TP5.2: Beans والنطاقات​

المدة: 1h30

الهدف: فهم النطاقات وتأثيرها

ستقوم بإنشاء:

  • Beans بنطاقات مختلفة
  • اختبار @Singleton مقابل @Prototype
  • إنشاء beans مخصصة باستخدام @Bean

TP5.3: التكوين حسب الملفات الشخصية​

المدة: 1h30

الهدف: إدارة بيئات متعددة

ستقوم بإنشاء:

  • تكوين لـ dev، test، prod
  • Beans مشروطة حسب ملف التعريف
  • application-{profile}.properties

📊 المدة الإجمالية​

النوعالمدة
النظرية2h45 (4 فصول)
العملي4h30 (3 تدريبات)
الإجمالي7h15 (~2-3 جلسات)

🎯 ما ستفهمه​

قبل هذه الوحدة​

// كنت تكتب هذا دون أن تفهم حقًا:
@Service
public class MyService {
private final MyRepository repo;

public MyService(MyRepository repo) {
this.repo = repo;
}
}

أسئلة بلا إجابات:

  • لماذا @Service؟
  • كيف يعرف Spring أنه يجب إنشاء MyRepository؟
  • لماذا الحقن عبر المنشئ؟
  • متى يتم إنشاء هذه الكائنات؟

بعد هذه الوحدة​

// ستفهم كل شيء:
@Service // ← Spring يدير هذا bean (singleton افتراضيًا)
public class MyService {
private final MyRepository repo; // ← غير قابل للتغيير (ممارسة جيدة)

// ← الحقن عبر المنشئ (موصى به)
public MyService(MyRepository repo) {
this.repo = repo; // ← Spring يحقن تلقائيًا
}
}

ستعرف:

  • ✅ كيف ينشئ Spring ويدير الكائنات
  • ✅ متى تستخدم @Component, @Service, @Repository
  • ✅ كيفية إدارة تنفيذات متعددة
  • ✅ كيفية التكوين لبيئات مختلفة
  • ✅ النطاقات المختلفة وفائدتها

🚀 لماذا هذه الوحدة مهمة​

1. فهم الأسس​

Spring Boot "يخفي" الكثير من التعقيد مع تكوينه التلقائي. هذا جيد للبدء بسرعة، لكن يجب أن تفهم ما يحدث "تحت الغطاء".

مثال ملموس:

خطأ شائع: "No qualifying bean of type X found"

بدون هذه الوحدة: 😰 تبحث في StackOverflow
مع هذه الوحدة: 😎 تفهم وتحل المشكلة في دقيقتين


2. كتابة كود احترافي​

المطورون المبتدئون ينسخون الكود دون فهم.
المطورون المحترفون يفهمون ويكيفون حسب السياق.

هذه الوحدة تجعلك تنتقل من مبتدئ إلى محترف في Spring Core.


3. التحضير للمقابلات​

الأسئلة حول IoC، DI، و beans في Spring هي شائعة جدًا في المقابلات التقنية.

أسئلة نموذجية:

  • "اشرح عكس التحكم"
  • "ما الفرق بين @Component و @Bean؟"
  • "متى تستخدم @Qualifier؟"
  • "اشرح نطاقات beans"

بعد هذه الوحدة، سيكون لديك جميع الإجابات!


🗺️ التقدم في الدورة​

الوحدة 1: مقدمة في Spring Boot
الوحدة 2: الخطوات الأولى (Initializr، الهيكل، التكوين)
الوحدة 3: بنية الطبقات الثلاث
الوحدة 4: قواعد البيانات في الإنتاج

الوحدة 5: ← أنت هنا - Spring Core (IoC/DI)
فهم الأسس

الوحدة 6: Spring Data JPA متقدم
الوحدة 7+: مفاهيم متقدمة

الوحدة 5 = اللحظة التي تفهم فيها Spring حقًا!


📖 كيفية التعامل مع هذه الوحدة​

النظرية قبل التطبيق​

  1. اقرأ الفصول النظرية الأربعة بالترتيب

    • لا تتخطى أي فصل
    • خذ ملاحظات
    • اختبر الأمثلة الصغيرة
  2. قم بالتدريبات بالترتيب

    • TP5.1: الحقن
    • TP5.2: Beans والنطاقات
    • TP5.3: التكوين
  3. راجع ملخص كل فصل


الوقت الموصى به​

الخيار المكثف (عطلة نهاية أسبوع واحدة):

  • صباح السبت: الفصول 1 و 2 + TP5.1
  • بعد ظهر السبت: الفصل 3 + TP5.2
  • صباح الأحد: الفصل 4 + TP5.3
  • بعد ظهر الأحد: المراجعة والتمارين

الخيار التدريجي (جلستان):

  • الجلسة 1: الفصول 1-2 + TP1
  • الجلسة 2: الفصول 3-4 + TP5.2 و TP5.3

✅ التقييم الذاتي​

قبل البدء، أجب:

  1. هل تعرف ما يعنيه IoC؟ ☐ نعم ☐ لا
  2. هل تعرف الأنواع الثلاثة للحقن؟ ☐ نعم ☐ لا
  3. هل تفهم الفرق بين @Component و @Bean؟ ☐ نعم ☐ لا
  4. هل تعرف ما هو نطاق bean؟ ☐ نعم ☐ لا

إذا أجبت "لا" على سؤال واحد → هذه الوحدة لك!

بعد الوحدة، أعد هذا الاختبار. يجب أن تجيب "نعم" على الكل!


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

جاهز لفهم Spring بعمق؟

➡️ ابدأ مع الفصل 1: عكس التحكم


⬅️ العودة إلى خطة الدورة