Injection de Dépendances (DI) et Inversion de Contrôle (IoC)
1. Inversion de Contrôle (IoC) L'Inversion de Contrôle est un principe architectural qui délègue la gestion des dépendances à un conteneur ou un framework, plutôt que de les gérer directement dans le code. Exemple sans IoC (Couplage fort) : class Service { private Repository repo; public Service() { this.repo = new Repository(); // Couplage fort } } Avec IoC, la gestion des dépendances est externalisée. 2. Injection de Dépendances (DI) L’Injection de Dépendances est une implémentation d’IoC où les dépendances sont injectées plutôt que créées à l'intérieur d'une classe. Types d'Injection de Dépendances 1. Injection par constructeur class Service { private Repository repo; public Service(Repository repo) { // Injection via constructeur this.repo = repo; } } 2. Injection par setter class Service { private Repository repo; public void setRepository(Repository repo) { // Injection via setter this.repo = repo; } } 3. Injection via un framework (ex: Spring en Java) Avec Spring, on peut utiliser l'annotation @Autowired : @Service class Service { @Autowired private Repository repo; // Injection automatique } 3. Avantages de DI et IoC ✅ Réduction du couplage : Favorise un code plus flexible et modulaire. ✅ Facilité de test : Permet d’injecter des mocks pour les tests unitaires. ✅ Meilleure maintenabilité : Les dépendances sont déclarées et gérées à un seul endroit. Exemples de Frameworks utilisant DI/IoC Java : Spring, CDI .NET : ASP.NET Core DI JavaScript : Angular (avec providers et injectors)

1. Inversion de Contrôle (IoC)
L'Inversion de Contrôle est un principe architectural qui délègue la gestion des dépendances à un conteneur ou un framework, plutôt que de les gérer directement dans le code.
Exemple sans IoC (Couplage fort) :
class Service {
private Repository repo;
public Service() {
this.repo = new Repository(); // Couplage fort
}
}
Avec IoC, la gestion des dépendances est externalisée.
2. Injection de Dépendances (DI)
L’Injection de Dépendances est une implémentation d’IoC où les dépendances sont injectées plutôt que créées à l'intérieur d'une classe.
Types d'Injection de Dépendances
1. Injection par constructeur
class Service {
private Repository repo;
public Service(Repository repo) { // Injection via constructeur
this.repo = repo;
}
}
2. Injection par setter
class Service {
private Repository repo;
public void setRepository(Repository repo) { // Injection via setter
this.repo = repo;
}
}
3. Injection via un framework (ex: Spring en Java)
Avec Spring, on peut utiliser l'annotation @Autowired
:
@Service
class Service {
@Autowired
private Repository repo; // Injection automatique
}
3. Avantages de DI et IoC
✅ Réduction du couplage : Favorise un code plus flexible et modulaire.
✅ Facilité de test : Permet d’injecter des mocks pour les tests unitaires.
✅ Meilleure maintenabilité : Les dépendances sont déclarées et gérées à un seul endroit.
Exemples de Frameworks utilisant DI/IoC
- Java : Spring, CDI
- .NET : ASP.NET Core DI
-
JavaScript : Angular (avec
providers
etinjectors
)