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:
- ✅ Expliquer ce qu'est l'Inversion de Contrôle (IoC)
- ✅ Maîtriser les 3 types d'injection de dépendances
- ✅ Créer et gérer des Beans Spring
- ✅ Utiliser les scopes appropriés (@Singleton, @Prototype, etc.)
- ✅ Configurer Spring avec @Configuration et @Bean
- ✅ 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
| Type | Durée |
|---|---|
| Théorie | 2h45 (4 chapitres) |
| Pratique | 4h30 (3 TPs) |
| Total | 7h15 (~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
-
Lisez les 4 chapitres théoriques dans l'ordre
- Ne sautez aucun chapitre
- Prenez des notes
- Testez les petits exemples
-
Faites les TPs dans l'ordre
- TP5.1: Injection
- TP5.2: Beans et Scopes
- TP5.3: Configuration
-
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:
- Savez-vous ce que signifie IoC? ☐ Oui ☐ Non
- Connaissez-vous les 3 types d'injection? ☐ Oui ☐ Non
- Comprenez-vous la différence entre @Component et @Bean? ☐ Oui ☐ Non
- 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