751 votes

Quelle est la différence entre @Inject et @Autowired dans le Framework Spring ? Dont un à utiliser sous quelle condition ?

Je vais à travers certains articles sur SpringSource et dans un des blog auteur utilise et je suppose qu’il peut aussi utiliser

Voici le morceau de code :

``

Je ne suis pas sûr de savoir la différence entre @Inject et @Autowired et vous serais reconnaissant si quelqu'un peut m’expliquer la différence et celle à utiliser dans quelle situation ?

773voto

pap Points 11466

En supposant ici que vous faites allusion à l' javax.inject.Inject des annotations. @Inject fait partie de la Java standard CDI introduit dans Java EE 6 (JSR-299), lire plus. Le printemps a choisi de soutenir à l'aide de @Inject synonyme à leurs propres @Autowired d'annotation.

Donc, pour répondre à votre question, @Autowired est le Printemps (héritage) annotation. @Inject fait partie d'une nouvelle technologie Java appelé CDI qui définit un standard pour l'injection de dépendance similaire à celle du Printemps. Au Printemps de l'application, les deux annotations fonctionne de la même manière que le Printemps a décidé de soutenir certains JSR-299 annotations en plus de leur propre.

169voto

nicholas.hauschild Points 21796

Voici un blog qui compare @Resource, @Inject, et @Autowired, et semble faire un joli globale de l'emploi.

À partir du lien:

À l'exception de l'essai 2 et 7, la configuration et les résultats ont été identiques. Quand j'ai regardé sous le capot, j'ai déterminé que l' ‘@Autocâblés " et "@Inject' annotation se comportent de façon identique. Les deux ces annotations utilisation de la "AutowiredAnnotationBeanPostProcessor' à injecter des dépendances. ‘@Autocâblés " et "@Inject " peuvent être utilisés interchangeables pour injecter des beans Spring. Toutefois, le "@Resource' annotation utilise la "CommonAnnotationBeanPostProcessor' à injecter les dépendances. Même si elles utilisent différentes classes post-processeur ils se comportent tous de manière pratiquement identique. Ci-dessous est un résumé de leurs les chemins d'exécution.

Les essais 2 et 7 de l'auteur de l'références sont "injection par nom de champ" et "une tentative de résolution d'un bean en utilisant un mauvais qualificatif", respectivement.

La Conclusion devrait vous donner toutes les informations dont vous avez besoin.

40voto

amits Points 81

Pour gérer la situation dans laquelle il n’y a aucun câblage, les haricots sont disponibles avec `` attribut la valeur .

Mais lorsque vous utilisez `` , l’interface du fournisseur travaille avec la fève, ce qui signifie que la fève n’est pas injectée directement, mais avec le fournisseur.

26voto

Andre Steingress Points 1689

À partir de Spring 3.0, Spring offre un support pour les annotations d’injection dépendance JSR-330 (@Inject, @Named, @Singleton).

Il y a une section distincte dans la documentation de printemps sur eux, y compris des comparaisons avec leurs équivalents de printemps.

12voto

Mykhaylo Adamovych Points 1907

@Inject n’a aucun attribut « obligatoire »

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X