Qu'est-ce que javax.injecter.Nommé annotation censé être utilisé pour?
J'essaie de comprendre le javax.inject
paquet et je ne suis pas clair ce que l' javax.inject.Named
annotation est censé être utilisé pour. La Javadoc ne permet pas d'expliquer l'idée derrière elle.
Javadoc est à http://download.oracle.com/javaee/6/api/javax/inject/Named.html
Je suis en utilisant Printemps 3.0 à écrire des programmes, en mettant @Named
sur un haricot, il semble pour l'ajouter à la fève de l'usine, mais la Javadoc description est tellement léger que je ne peux pas dire si c'est le comportement standard de Printemps ou un comportement spécifique.
Mes questions sont:
- Quelle est la différence entre
@Named
et@Qualifier
- Comment êtes-vous censé dire le système d'Exécution d'une classe doivent être injectable dans d'autres classes, ce qui est l'annotation pour qui? L'équivalent de
@Component
au Printemps?
Mise à jour de 1 il y a une excellente explication de @Named
et @Qualifier
à bel article à propos de @Named
et @Qualifier
http://java.dzone.com/articles/java-ee6-cdi-named-components merci @xmedeko pour les liens vers le commentaire ci-dessous.
- La configuration de la JSR-330 est en dehors de la spécification, c'est à dire conteneur spécifique.
- Selon le Ressort des docs "de la JSR 330 s @Nommé annotation peut être utilisée comme un moyen pour détecter des composants et de leur donner un nom. Ce comportement est automatiquement activée si vous avez la JSR 330 JAR dans le classpath." est ce comportement unique au printemps ou à tous les conteneurs qui comprennent @Nommé?
Vous devez vous connecter pour publier un commentaire.
Utiliser @Nommé pour différencier les différents objets du même type lié dans le même cadre.
Sans le @Nommé qualificatif, l'injecteur ne sais pas qui l'a longtemps à se lier à la variable qui.
Si vous voulez créer des annotations qui agissent comme @Nommé, utilisez le @Qualifier d'annotation lors de la création d'eux. Si vous regardez @Nommé, il s'est lui-même annoté avec @Qualifier.
@Named
et@Qualifier
java.dzone.com/articles/java-ee6-cdi-named-componentsmaxWaitTimeMs
dire l'injecteur quilong
à se lier à quelle variable? Pourquoi avons-nous besoin d'un@Named
et un nom de variable?@Named
et@Qualifier
sont utiles, c'est que vous pouvez avoir différents points d'injection (généralement les domaines) du même type et nom, mais dans le différentes étendues (ie, autre propriétaire classes); dans un tel cas, le nom fourni dans le qualificatif utilisé par le conteneur d'injection de dépendances de choisir entre plusieurs injectable haricots/valeurs de même type.@named
encore nécessaires pour que la mise en œuvre? Puis-je utiliser le@Inject
(sans l'aide de@named
) pour injecter de la mise en œuvre d'une variable de l'interface correspondante? Je sais pour le Printemps, vous avez besoin de marquer une classe de composant pour le haricot d'être créé. La même règle s'applique ici? Merci!@Inject
au lieu du Printemps@Autowired
à injecter un haricot.@Named
au lieu du Printemps@Component
de déclarer un bean.Ceux JSR 330 annotations standard sont numérisés et extraites de la même manière que le Printemps annotation (tant que l'
jar
est dans votre classpath)Sujet #2, selon la JSR 330 spec:
Donc, c'est le fournisseur afin de déterminer les objets qui sont disponibles pour l'injection. Dans le cas du Printemps, il est tous les beans Spring. Et toute la classe annotée avec la JSR 330 annotations sont ajoutées automatiquement beans Spring lors de l'utilisation d'un AnnotationConfigApplicationContext.
Le rôle principal de l' @Nommé annotation est de définir un bean dans le but de résoudre EL instructions à l'intérieur de l'application, généralement par le biais de l'ACI EL résolveurs. L'Injection peut être effectuée à l'aide de noms, mais ce n'était pas la façon d'injection en CDI devais travailler depuis CDI nous donne une bien plus riche pour exprimer des points d'injection et les haricots à être injecté dans les.