Aller au contenu principal

MODULE 5 - Spring Core: IoC et DI Avancé

Bienvenue au Module 5! 🎯​

Vous avez utilisé l'injection de dépendances dans les modules précédents, mais comprenez-vous vraiment comment ça marche?

Ce module vous dévoile les secrets internes de Spring et vous rend autonome pour gérer n'importe quelle situation d'injection de dépendances.


🎓 Objectifs d'Apprentissage​

À la fin de ce module, vous serez capable de:

  1. ✅ Expliquer ce qu'est l'Inversion de Contrôle (IoC)
  2. ✅ Maîtriser les 3 types d'injection de dépendances
  3. ✅ Créer et gérer des Beans Spring
  4. ✅ Utiliser les scopes appropriés (@Singleton, @Prototype, etc.)
  5. ✅ Configurer Spring avec @Configuration et @Bean
  6. ✅ Gérer les profils (dev, test, prod)

📚 Prérequis​

Avant de commencer ce module, vous devez avoir:

  • ✅ Complété les Modules 1 à 4
  • ✅ Utilisé l'injection par constructeur dans vos TPs
  • ✅ Compris l'architecture 3 couches (Controller, Service, Repository)

Si ces prérequis ne sont pas acquis, retournez aux modules précédents!


🗺️ Plan du Module​

Partie Théorique (4 chapitres)​

Chapitre 1: Inversion de Contrôle (IoC)​

Durée: 30 minutes

Contenu:

  • Qu'est-ce que l'IoC?
  • Le problème du couplage fort
  • Comment Spring résout ce problème
  • Le Container Spring (ApplicationContext)

Pourquoi important? Comprendre le principe fondamental de Spring


Chapitre 2: Injection de Dépendances (DI)​

Durée: 45 minutes

Contenu:

  • Les 3 types d'injection (constructeur, setter, field)
  • Pourquoi l'injection par constructeur est préférée
  • @Autowired, @Inject, @Resource
  • Dépendances optionnelles

Pourquoi important? Choisir la bonne méthode d'injection


Chapitre 3: Beans et Contexte Spring​

Durée: 45 minutes

Contenu:

  • Qu'est-ce qu'un Bean?
  • @Component, @Service, @Repository, @Controller
  • @Bean et @Configuration
  • Nommage des beans
  • @Qualifier et @Primary

Pourquoi important? Maîtriser la création et la gestion des objets Spring


Chapitre 4: Scopes et Configuration​

Durée: 45 minutes

Contenu:

  • Scopes: @Singleton, @Prototype
  • Scopes web: @RequestScope, @SessionScope
  • Configuration Java vs XML
  • Profils (@Profile) pour dev/test/prod
  • @ComponentScan

Pourquoi important? Contrôler le cycle de vie et la configuration


Partie Pratique (3 TPs)​

TP5.1: Injection de Dépendances Avancée​

Durée: 1h30

Objectif: Maîtriser les différents types d'injection

Vous allez créer:

  • Plusieurs services avec différentes méthodes d'injection
  • Gérer les dépendances circulaires
  • Utiliser @Qualifier pour choisir l'implémentation

TP5.2: Beans et Scopes​

Durée: 1h30

Objectif: Comprendre les scopes et leur impact

Vous allez créer:

  • Beans avec différents scopes
  • Tester @Singleton vs @Prototype
  • Créer des beans personnalisés avec @Bean

TP5.3: Configuration par Profils​

Durée: 1h30

Objectif: Gérer plusieurs environnements

Vous allez créer:

  • Configuration pour dev, test, prod
  • Beans conditionnels selon le profil
  • application-{profile}.properties

📊 Durée Totale​

TypeDurée
Théorie2h45 (4 chapitres)
Pratique4h30 (3 TPs)
Total7h15 (~2-3 séances)

🎯 Ce Que Vous Allez Comprendre​

Avant ce Module​

// Vous écriviez ça sans vraiment comprendre:
@Service
public class MyService {
private final MyRepository repo;

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

Questions sans réponses:

  • Pourquoi @Service?
  • Comment Spring sait qu'il doit créer MyRepository?
  • Pourquoi injection par constructeur?
  • Quand sont créés ces objets?

Après ce Module​

// Vous comprendrez TOUT:
@Service // ← Spring gère ce bean (singleton par défaut)
public class MyService {
private final MyRepository repo; // ← Immutable (bonne pratique)

// ← Injection par constructeur (recommandé)
public MyService(MyRepository repo) {
this.repo = repo; // ← Spring injecte automatiquement
}
}

Vous saurez:

  • ✅ Comment Spring crée et gère les objets
  • ✅ Quand utiliser @Component, @Service, @Repository
  • ✅ Comment gérer plusieurs implémentations
  • ✅ Comment configurer pour différents environnements
  • ✅ Les différents scopes et leur utilité

🚀 Pourquoi Ce Module Est Important​

1. Comprendre les Fondations​

Spring Boot "cache" beaucoup de complexité avec son auto-configuration. C'est bien pour démarrer vite, mais vous devez comprendre ce qui se passe "sous le capot".

Exemple concret:

Erreur fréquente: "No qualifying bean of type X found"

Sans ce module: 😰 Vous cherchez sur StackOverflow
Avec ce module: 😎 Vous comprenez et réglez le problème en 2 minutes


2. Écrire du Code Professionnel​

Les développeurs juniors copient du code sans comprendre.
Les développeurs seniors comprennent et adaptent selon le contexte.

Ce module vous fait passer de junior à senior sur Spring Core.


3. Préparation aux Entretiens​

Les questions sur IoC, DI, et les beans Spring sont extrêmement fréquentes en entretien technique.

Questions typiques:

  • "Expliquez l'Inversion de Contrôle"
  • "Quelle est la différence entre @Component et @Bean?"
  • "Quand utiliser @Qualifier?"
  • "Expliquez les scopes des beans"

Après ce module, vous aurez toutes les réponses!


🗺️ Progression dans la Formation​

Module 1: Introduction Spring Boot
Module 2: Premiers Pas (Initializr, Structure, Config)
Module 3: Architecture 3 Couches
Module 4: Bases de Données Production

Module 5: ← VOUS ÊTES ICI - Spring Core (IoC/DI)
Comprendre les fondations

Module 6: Spring Data JPA Avancé
Module 7+: Concepts avancés

Module 5 = Le moment où vous comprenez VRAIMENT Spring!


📖 Comment Aborder Ce Module​

Théorie AVANT Pratique​

  1. Lisez les 4 chapitres théoriques dans l'ordre

    • Ne sautez aucun chapitre
    • Prenez des notes
    • Testez les petits exemples
  2. Faites les TPs dans l'ordre

    • TP5.1: Injection
    • TP5.2: Beans et Scopes
    • TP5.3: Configuration
  3. Revoyez le résumé de chaque chapitre


Temps Recommandé​

Option Intensive (1 week-end):

  • Samedi matin: Chapitres 1 et 2 + TP5.1
  • Samedi après-midi: Chapitre 3 + TP5.2
  • Dimanche matin: Chapitre 4 + TP5.3
  • Dimanche après-midi: Révision et exercices

Option Progressive (2 séances):

  • Séance 1: Chapitres 1-2 + TP1
  • Séance 2: Chapitres 3-4 + TP5.2 et TP5.3

✅ Auto-Évaluation​

Avant de commencer, répondez:

  1. Savez-vous ce que signifie IoC? ☐ Oui ☐ Non
  2. Connaissez-vous les 3 types d'injection? ☐ Oui ☐ Non
  3. Comprenez-vous la différence entre @Component et @Bean? ☐ Oui ☐ Non
  4. Savez-vous ce qu'est un scope de bean? ☐ Oui ☐ Non

Si vous avez répondu "Non" à une seule question → Ce module est pour vous!

Après le module, refaites ce test. Vous devrez répondre "Oui" à TOUT!


🎯 Prochaine Étape​

Prêt à comprendre Spring en profondeur?

➡️ Commencer avec le Chapitre 1: Inversion de Contrôle


⬅️ Retour au Plan de Cours