Injection de constructeur vs injection de setter : différence et comparaison

Lorsque la résolution des dépendances est effectuée par un agent externe plutôt que par la classe elle-même, on parle alors d'injection de dépendances.

Il existe deux méthodes standard d'injection de dépendances prises en charge dans le framework Spring, via un argument de constructeur ou via l'utilisation de la méthode setter.

Le premier type d'injection de dépendance est connu sous le nom de constructeur injection, et cette dernière est connue sous le nom d'injection de setter. Les deux méthodes sont utilisées à des fins différentes et ont leurs propres avantages et inconvénients.

Faits marquants

  1. L'injection de constructeur assure la création complète de l'objet avec toutes les dépendances ; l'injection de setter permet la création d'objets partiels.
  2. L'injection de constructeur favorise l'immuabilité ; l'injection de setter permet des objets mutables.
  3. L'injection de constructeur empêche les dépendances circulaires ; l'injection de setter peut conduire à des dépendances circulaires.

Injection de constructeur vs injection de setter 

L'injection de constructeur est un type d'injection de dépendance dans le framework Spring qui utilise un constructeur pour injecter une dépendance. Une injection setter est un type d'injection de dépendance dans le framework Spring qui utilise des méthodes setter pour injecter une dépendance. Il peut injecter une dépendance partielle et est plus flexible.

Injection de constructeur vs injection de setter

L'injection de constructeur est un type d'injection de dépendance dans le framework Spring qui utilise un constructeur pour injecter une dépendance. Les dépendances requises pour l'une des classes sont spécifiées en tant que paramètres du constructeur de cette classe spécifique.

L'injection de constructeur ne permet pas au développeur de construire un objet tant que toutes les dépendances ne sont pas prêtes, et garantit ainsi une injection de dépendance réussie.

L'injection de setter est un type d'injection de dépendance dans le framework Spring qui utilise des méthodes de setter pour injecter la dépendance. Il a des méthodes setter de la forme set XYZ (), où XYZ désigne une dépendance qui injecte les objets dépendants dans le client.

Cette façon de résoudre la dépendance est très courante dans le framework Spring.

Tableau de comparaison

Paramètres de comparaisonInjection de constructeurInjection de poseur 
Dépendance injectéeIl utilise un constructeur.Il utilise des méthodes de setter.
lisibilitéC'est peu lisible par rapport au setter.C'est plus lisible.
Remplacer la propriétéImpossible de remplacer la dépendance.Peut remplacer certaines dépendances.
ModificationsIl crée toujours une nouvelle instance de bean.Il ne crée aucune nouvelle instance de bean.
ImmutabilitéIl prend en charge l'immuabilité.Il ne prend pas en charge.

Qu'est-ce que l'injection constructeur ?

L'injection de constructeur est l'un des moyens standard de résoudre les dépendances dans le framework Spring, qui définit de manière statique la liste des dépendances requises pour les classes en les attribuant comme paramètres au constructeur de la classe.

Lisez aussi:  Pétrographie vs pétrogénèse : différence et comparaison

Toutes les classes qui nécessitent une dépendance doivent avoir un constructeur public à l'intérieur, qui prend une instance comme argument du constructeur, et ce constructeur doit nécessairement être le seul constructeur public à l'intérieur de cette classe.

Si plusieurs dépendances sont nécessaires, les arguments supplémentaires doivent être ajoutés au même constructeur. Un principe de responsabilité unique doit être suivi pour s'assurer que la dépendance est complètement injectée, qui stipule que les membres ne doivent faire qu'une seule chose.

Le constructeur doit être exempt de toute autre logique pour rendre le constructeur des classes plus rapide et plus fiable.

Un fait important de l'injection de constructeur est que les objets ne seront pas construits tant que toutes les dépendances ne seront pas prêtes. Comme il crée de nouvelles instances à chaque fois que le constructeur est appelé ainsi, le remplacement n'est pas possible.

L'injection de constructeur est essentiellement utilisée dans les cas où il est nécessaire de créer des objets avec toutes les dépendances. C'est le moyen le plus applicable et le plus simple d'implémenter correctement les dépendances.

injection constructeur

Qu'est-ce que Setter Injection?

L'injection de setter est l'un des moyens standard de résolution des dépendances dans le framework Spring, qui utilise les méthodes de setter pour résoudre les dépendances. Les méthodes setter sont de la forme set XYZ (), où XYZ spécifie la dépendance qui doit être injectée.

Dans ce type de méthode d'injection, l'objet est d'abord créé, puis la dépendance est injectée. Pour configurer Spring, XML les fichiers sont utilisés ; ainsi, la lisibilité est une grande préoccupation.

Comme les méthodes setter ont une forme spécifiée de noms de méthode, cela améliore la lisibilité de plusieurs façons. Lorsqu'il est nécessaire d'injecter un plus grand nombre de dépendances, le type d'injection setter est très favorisé et préféré aux autres types de méthodes d'injection.

En plus de cela, en utilisant l'injection de setter, les développeurs peuvent facilement remplacer et modifier les valeurs car cela ne crée pas une nouvelle instance de bean à chaque fois. Le seul inconvénient de l'injection setter est qu'elle n'assure pas l'injection complète des dépendances.

Lisez aussi:  Oxycodone vs Percocet : différence et comparaison

Il n'y a aucune garantie quant à savoir si un certain objet a une dépendance injectée ou non. En d'autres termes, cela signifie qu'il pourrait y avoir un objet avec une dépendance incomplète. L'injection Setter est le moyen le plus flexible et le plus courant d'implémenter l'injection de dépendances.

injection de poseur

Différences principales entre l'injection de constructeur et l'injection de setter 

  1. Lorsque l'injection de constructeur est utilisée pour injecter la dépendance, cela se fait en utilisant un constructeur sur n'importe quel bean géré par Spring, tandis que l'injection Setter utilise des méthodes setter comme set dependency() dans le but d'injecter une dépendance sur l'un des bean gérés par le conteneur IOC de Spring.
  2. L'injection de setter est plus lisible par rapport à l'injection de constructeur car la méthode de setter a toujours des noms commençant par le mot set comme setXYZ(), et donc, il est facile à lire dans le Spring XML config et interpréter la dépendance qui est définie alors que l'injection de constructeur utilise un index dans le but d'injecter la dépendance.
  3. Certaines dépendances peuvent être remplacées à l'aide de l'injection de setter, alors que ce n'est pas possible en utilisant l'injection de constructeur, car chaque fois qu'un nouvel objet est créé lorsque le constructeur est appelé.
  4. En utilisant l'injection de setter, la valeur peut facilement être modifiée car elle ne crée aucune nouvelle instance de bean, alors que ce n'est pas le cas lors de l'utilisation de l'injection de constructeur car elle crée toujours une nouvelle instance de bean.
  5. L'injection de constructeur prend en charge l'immuabilité, alors que d'autre part, l'injection de setter ne prend pas en charge l'immuabilité.
Bibliographie
  1. https://digitalcommons.calpoly.edu/csse_fac/34/
  2. https://books.google.com/books?hl=en&lr=&id=InfRDwAAQBAJ&oi=fnd&pg=PA63&dq=constructor+injection&ots=Hon_bCw-Kv&sig=VdsD_S0lCfP3D8idI8q4F6RnhoE

Dernière mise à jour : 19 juillet 2023

point 1
Une requête?

J'ai mis tellement d'efforts à écrire ce billet de blog pour vous apporter de la valeur. Cela me sera très utile, si vous envisagez de le partager sur les réseaux sociaux ou avec vos amis/famille. LE PARTAGE C'EST ♥️

25 réflexions sur « Injection de constructeur vs injection de setter : différence et comparaison »

  1. Les explications des injections de constructeur et de setter soulignent l'importance de gérer correctement les dépendances d'objet pour un développement logiciel robuste et maintenable.

    Répondre
    • En effet, Vcox. Un examen attentif des méthodes d’injection de dépendances est essentiel pour garantir la viabilité et la maintenabilité à long terme des systèmes logiciels.

      Répondre
  2. Les informations détaillées sur les injections de constructeurs et de setters fournissent aux développeurs une solide compréhension de la façon de gérer efficacement les dépendances dans les applications du framework Spring.

    Répondre
    • Parfait, Rogers Natasha. Comprendre les subtilités des méthodes d'injection de dépendances est crucial pour maintenir des bases de code propres et évolutives.

      Répondre
  3. Il est fascinant de voir comment les injections de constructeur et de setter offrent différents niveaux de prise en charge de l'immuabilité et des dépendances circulaires, ce qui a un impact sur la conception et le comportement de l'application.

    Répondre
    • Absolument, Christian13. Le potentiel de dépendances circulaires et d’immuabilité des objets devrait être une considération centrale lors du choix d’une méthode d’injection de dépendances.

      Répondre
    • Je ne pourrais pas être plus d’accord, Christian13. Les implications de ces différences sur l’architecture globale du système sont considérables et doivent être soigneusement étudiées.

      Répondre
  4. Le tableau comparatif fournit un aperçu concis des avantages et des inconvénients de l’injection constructeur et setter, ce qui facilite le choix de celle à utiliser dans différents contextes.

    Répondre
    • Absolument, Amoris. Il est essentiel de peser les compromis entre immuabilité, lisibilité et exhaustivité de la création d'objets lors du choix de la méthode d'injection.

      Répondre
    • J'apprécie la comparaison détaillée. Il aide les développeurs à prendre des décisions éclairées en fonction des exigences spécifiques de l'application.

      Répondre
  5. Les explications détaillées des injections de constructeur et de setter fournissent des informations précieuses sur les différences et les cas d'utilisation de chaque approche.

    Répondre
    • Bien dit, Darren. Comprendre les concepts fondamentaux et les implications des méthodes d'injection de dépendances est crucial pour que les développeurs puissent créer des systèmes robustes et maintenables.

      Répondre
  6. Les explications détaillées des injections de constructeur et de setter mettent en lumière les compromis entre l'exhaustivité de la création d'objets et la flexibilité dans la gestion des dépendances.

    Répondre
    • Absolument, Eden60. L’équilibre entre exhaustivité et flexibilité dans l’injection de dépendances est crucial pour développer des applications logicielles évolutives et maintenables.

      Répondre
    • Bien résumé, Eden60. Comprendre ces compromis est essentiel pour prendre des décisions éclairées sur la conception et l’architecture des systèmes logiciels.

      Répondre
  7. La comparaison entre les injections constructeur et setter permet aux développeurs de comprendre clairement les implications de chaque méthode sur la conception globale et le comportement de l'application.

    Répondre
    • Bien dit, fuyez. Comprendre les implications des différentes méthodes d'injection de dépendances est crucial pour développer des solutions logicielles robustes et maintenables.

      Répondre
  8. La comparaison des injections constructeur et setter montre clairement que les deux approches présentent des avantages et des implications distincts sur la conception globale et le comportement de l'application.

    Répondre
    • Absolument, Qrogers. Il est essentiel d'évaluer les exigences spécifiques et les implications de chaque méthode d'injection pour prendre des décisions de conception éclairées.

      Répondre
  9. Les explications détaillées des injections de constructeur et de setter fournissent aux développeurs des informations précieuses sur la façon de concevoir et de gérer efficacement des dépendances complexes.

    Répondre
    • Bien dit, Archie30. Avoir une compréhension approfondie des méthodes d’injection de dépendances est crucial pour concevoir des architectures logicielles robustes et maintenables.

      Répondre
  10. Super explication! Les deux méthodes d’injection de dépendances ont leurs avantages et leurs inconvénients qui doivent être soigneusement pris en compte dans chaque projet.

    Répondre
    • Je suis d'accord, Ava. L'injection de constructeur est un excellent choix lorsqu'il est nécessaire d'assurer une création complète d'objets avec toutes les dépendances, tandis que l'injection de setter est plus flexible mais ne garantit pas une injection complète de dépendances.

      Répondre
    • Merci pour l'explication claire. Il est important d'évaluer les besoins spécifiques du projet pour déterminer la méthode d'injection de dépendances la plus appropriée.

      Répondre

Laisser un commentaire

Vous voulez enregistrer cet article pour plus tard ? Cliquez sur le cœur dans le coin inférieur droit pour enregistrer dans votre propre boîte d'articles !