web-dev-qa-db-fra.com

Différence entre l'inversion du contrôle et l'injection de dépendance

IoC et le concept de DI étaient très déroutants pour moi, alors j'ai lu beaucoup de points de vue et de messages de personnes différentes avant de parvenir à la conclusion. Donc, si je comprends bien, ces sujets sont ...

L’inversion de contrôle est une technique en Java permettant de créer des applications faiblement couplées et plus facilement gérables, et l’injection de dépendances est l’un des moyens de réaliser ce concept (technique).

L'inversion du conteneur de contrôle injecte la dépendance au moment de l'exécution à partir des classes Java pour créer une application faiblement couplée.

Est-ce vrai ? Corrigez-moi si je me trompe...

20
Devendra Anchal

IoC est un terme générique signifiant plutôt que de faire en sorte que l'application appelle les méthodes dans un cadre, le cadre appelle les implémentations fournies par l'application.

DI est une forme d'IoC, dans laquelle les implémentations sont transmises à un objet par le biais de constructeurs/installateurs/recherches de service, dont l'objet dépendra pour se comporter correctement.

Référence: Inversion du contrôle vs injection de dépendance

17
NG.

Ce sont des modèles pour réaliser un couplage lâche dans la programmation Java

DI (Injection de dépendance):
L'injection de dépendance est un modèle utilisé pour créer des occurrences d'objets Sur laquelle s'appuient d'autres objets sans savoir au moment de la compilation .__ quelle classe sera utilisée pour fournir cette fonctionnalité ou simplement la manière d'injecter des propriétés appelé injection de dépendance.

Nous avons trois types d'injection de dépendance

  1. Injection de constructeur 
  2. Injecteur/Getter 
  3. Interface d'Injection

Spring ne prend en charge que les injecteurs Constructor et Setter/Getter Injection. 

IOC (Inversion Of Control):
Donner le contrôle au conteneur pour créer et injecter des instances d'objets dont dépend votre application signifie qu'au lieu de créer un objet à l'aide de l'opérateur new, laissez le conteneur le faire pour vous . L'inversion du contrôle repose sur injection de dépendance car un mécanisme est nécessaire pour activer les composants fournissant la fonctionnalité spécifique

Les deux concepts fonctionnent ainsi pour permettre l'écriture d'un code beaucoup plus flexible, réutilisable et encapsulé. En tant que tels, ils constituent des concepts importants dans la conception de solutions orientées objet.

Exemple d'injection de dépendance

Auparavant, nous écrivons du code comme celui-ci

Public MyClass{
 DependentClass dependentObject
 /*
  At somewhere in our code we need to instantiate 
  the object with new operator  inorder to use it or perform some method.
  */ 
  dependentObject= new DependentClass();
  dependentObject.someMethod();
}

Avec l'injection de dépendance, l'injecteur de dépendance enlève l'instanciation pour nous 

Public MyClass{
 /* Dependency injector will instantiate object*/
 DependentClass dependentObject

 /*
  At somewhere in our code we perform some method. 
  The process of  instantiation will be handled by the dependency injector
 */ 

  dependentObject.someMethod();
}

Le processus ci-dessus consistant à donner le contrôle à un autre (par exemple le conteneur) pour l'instanciation et l'injection peut être qualifié de Inversion of Control

Vous pouvez en savoir plus sur l'injection de dépendance et IOC dans ma réponse: - Vous pouvez trouver les avantages et les applications des concepts ici.

Qu'est-ce que l'injection de dépendance?

11
Samuel J Mathew

Inversion de contrôle signifie que le programme délègue le contrôle à une autre personne qui gérera le flux IOC (Inversion de contrôle) est un terme général, tandis que DI (injection de dépendance) est un sous-ensemble de IOC. IOC est un concept dans lequel le flux d’application est inversé. Le contrôle de la logique qui ne fait pas partie de cette entité est pris par quelqu'un d'autre. DI fournit les objets dont un objet a besoin. Ainsi, plutôt que les dépendances se construisent elles-mêmes, elles sont injectées. Le plus grand avantage obtenu par l’approche ci-dessus est le «découplage»: nous pouvons invoquer un objet et transmettre tout objet en gardant les objets indépendants afin d’améliorer la réutilisation et la maintenance.

1
Nico

IOC signifie "Inversion of Control". Il fonctionnera selon le principe IOC, ce qui signifie collaboration des objets et gestion des objets du cycle de vie. Collaborer signifie que les objets sont regroupés au même endroit. nous pouvons collaborer les objets sont deux façons dont ils sont tirés de dépendance et injection de dépendance. DP divisé en deux manières (tirant de dépendance et tirant de dépendance contextuelle) et DI également divisé en deux manières (injection de Setter et injecteur de constructeur) .IOC supporte les deux manières mais, l'objectif principal du travail de cadre de ressort est que nos composants seront complètement lâches couplé . Si nous utilisons Dépendence, notre classe de composants sera étroitement associée à une autre classe, même si elle fait partie du travail à ressort.Alors il est recommandé de choisir l’injection de dépendance (Setter Injection ou Constructor Injection). Il n'y a pas de différence entre IOC et DI.IOC est différent et DI est différent, DI est l'une des parties d'IOC.

0
user8293791

L'inversion de l'injection de contrôle et de dépendance est un modèle de conception principal du framework Spring. IOC et le modèle de conception DI constituent également une question d’entretien avec un modèle de conception très répandue en Java. Comme son nom l'indique Inversion du motif de contrôle Inverse la responsabilité de la gestion du cycle de vie de l'objet, par ex. créer un objet, définir leur dépendance, etc. d'une application à une structure, ce qui rend l'écriture d'une application Java encore plus facile. 

En savoir plus: http://javarevisited.blogspot.com/2012/12/inversion-of-control-dependency-injection-design-pattern-spring-example-tutorial.html#ixzz4xve86pPN

0
Krishnanunni P V

Inversion of Control (IoC) fait référence à un style de programmation dans lequel un framework ou une exécution contrôle le flux du programme. L'inversion du contrôle signifie que nous modifions le contrôle de manière normale. Cela fonctionne sur le principe d'inversion de dépendance.

DI est un modèle de conception de logiciel qui nous permet de développer un code faiblement couplé. DI est un excellent moyen de réduire le couplage étroit entre les composants logiciels. DI nous permet également de mieux gérer les modifications futures et d’autres complexités de nos logiciels. Le but de DI est de rendre le code maintenable.

0
Adi Sembiring