DEV Community

khalil la
khalil la

Posted on

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
    }
}
Enter fullscreen mode Exit fullscreen mode

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

2. Injection par setter

class Service {
    private Repository repo;

    public void setRepository(Repository repo) { // Injection via setter
        this.repo = repo;
    }
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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)

🎯 En résumé

  • IoC est un principe général qui délègue la gestion du flux d’exécution.
  • DI est une façon d’implémenter IoC en injectant les dépendances au lieu de les créer manuellement.
  • Utiliser un framework comme Spring ou ASP.NET Core permet d'automatiser cette gestion.

Besoin d'un exemple concret avec un framework spécifique ? 😊

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay