Quelle est la différence entre l'injection de ressources et l'injection de dépendances (CDI) en Java?

J'ai appris Java EE depuis longtemps et J'ai trouvé que Java EE fournit deux types de mécanismes d'injection

  1. Injection De Ressources
  2. Injection De Dépendances

veuillez me guider pour comprendre la différence entre L'Injection de ressources et L'Injection de dépendances.

19
demandé sur UUIUI 2015-05-05 21:46:06

4 réponses

Java EE fournit des mécanismes d'injection qui permettent à nos objets d'obtenir les références aux ressources et autres dépendances sans avoir à les instancier directement (explicitement avec le mot-clé "new"). Nous déclarons simplement les ressources nécessaires et les autres dépendances dans nos classes en dessinant des champs ou des méthodes avec des annotations qui indiquent le point d'injection du compilateur.

le conteneur fournit alors les instances requises à l'exécution. L'avantage de l'Injection, c'est qu'il simplifie notre code et le dissocie des implémentations de ses dépendances.

les deux méthodes facilitent l'Inversion du contrôle.

jetez un coup d'oeil à un de mes articles que j'ai écrit là-dessus.

7
répondu Lalit Rao 2015-05-05 19:33:27

source:

injection de ressources vous permet d'injecter n'importe quelle ressource disponible dans le JNDI namespace dans n'importe quel objet géré par un conteneur, tel qu'un servlet, un haricot d'entreprise, ou un haricot géré. Par exemple, nous pouvons utiliser des ressources injection pour injecter des sources de données, des connecteurs ou tout autre ressources disponibles dans l'espace de noms JNDI.

injection de dépendance nous permet de tourner régulièrement Les classes Java dans objets gérés et de les injecter dans tout autre objet géré (les objets qui sont gérés par le conteneur).

Différence entre les Ressources de l'Injection et l'Injection de Dépendance le les différences entre le RI et le DI sont énumérées ci-dessous.

  1. L'Injection de ressources peut injecter directement des ressources JNDI alors que l'Injection de dépendances ne le peut pas.

  2. Injection de dépendance peut injecter régulièrement Les Classes (haricots gérés) directement alors que L'Injection de ressources ne peut pas.

  3. L'Injection de ressources se résout par le nom de la ressource tandis que L'injection de dépendances se résout par le type.

  4. L'Injection de dépendance est de typesafe alors que L'Injection de Resoiurce ne l'est pas.

18
répondu Rahul Tripathi 2015-05-05 18:48:50

la réponse de Rahul Tripathi est exacte et correcte. Mais pour le mettre de manière plus succincte qui peut vous aider à décider lequel utiliser, regardons-le de cette façon: DI est typiquement utilisé pour assigner des classes d'implémentation aux interfaces. Alors que RI est utilisé pour extraire les valeurs des propriétés et les connexions JDBC de JNDI. DI vous permet d'écrire du code contre des interfaces et de décider plus tard sur quelle implémentation utiliser. Il y a un certain chevauchement, généralement lorsque les objets RI'D sont plus qu'une simple propriété valeur et lorsque L'AI est utilisé pour transmettre une valeur de propriété. Un bon exemple de ce chevauchement, comme je l'ai déjà mentionné, est celui des connexions JDBC. Une connexion JDBC n'est pas seulement une chaîne de connexion (valeur des propriétés), c'est aussi une implémentation (quels pilotes utiliser).

je pense que si vous utilisez DI et que vous avez besoin de passer une certaine valeur de propriété, il suffit de continuer à utiliser DI. Et si vous utilisez RI et avez besoin de passer un objet, que juste le faire dans RI si possible. En fin de compte, si vous utilisez les deux, plus de fichiers XML à remplir.

3
répondu Jose Martinez 2015-05-05 19:12:42