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)

Feb 27, 2025 - 01:12
 0
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)