J'essaie de comprendre le javax.inject
package et je ne sais pas ce que le javax.inject.Named
annotation est censé être utilisé pour. La Javadoc n'explique pas l'idée derrière elle.
Javadoc est à http://download.Oracle.com/javaee/6/api/javax/inject/Named.html
J'utilise Spring 3.0 pour écrire des exemples de programmes, en mettant @Named
_ sur un haricot, il semble l’ajouter à l’usine de haricots, mais la description de Javadoc est si claire que je ne peux pas dire s’il s’agit du comportement standard ou du comportement spécifique de Spring.
Mes questions sont:
@Named
et @Qualifier
@Component
au printemps? Mise à jour 1 il existe une excellente explication de @Named
et @Qualifier
à l'article de Nice sur @Named
et @Qualifier
http://Java.dzone.com/articles/Java-ee6-cdi-named-components Merci @xmedeko pour avoir lié ce commentaire au commentaire ci-dessous.
Utilisez @Named pour différencier différents objets du même type liés dans la même portée.
@Named("maxWaitTime")
public long maxWaitTimeMs;
@Named("minWaitTime")
public long minWaitTimeMs;
Sans le qualificatif @Named, l'injecteur ne saurait pas quelle longueur lier à quelle variable.
Si vous souhaitez créer des annotations qui agissent comme @Named, utilisez l'annotation @Qualifier lors de leur création. Si vous regardez @Named, il est annoté avec @Qualifier.
@Inject
au lieu de printemps @Autowired
injecter un haricot.@Named
au lieu de printemps @Component
déclarer un haricot.
Ces annotations standard JSR-3 sont analysées et extraites de la même manière que les annotations Spring (à condition que le jar
suivant soit dans votre chemin de classe)
Concernant le n ° 2, selon la spécification JSR-330:
Ce paquet fournit des annotations d'injection de dépendance qui activent les classes portables, mais il laisse la configuration de dépendance externe jusqu'à l'implémentation de l'injecteur.
Il appartient donc au fournisseur de déterminer quels objets sont disponibles pour l’injection. Dans le cas du printemps, ce sont tous des haricots de printemps. Et toutes les classes annotées avec des annotations JSR-330 sont automatiquement ajoutées en tant que beans Spring lors de l'utilisation d'un AnnotationConfigApplicationContext.
Le rôle principal de l'annotation @Named est de définir un bean dans le but de résoudre les instructions EL au sein de l'application, généralement via les résolveurs JSF EL. L'injection peut être effectuée à l'aide de noms, mais ce n'était pas ainsi que l'injection dans CDI était censée fonctionner, car CDI nous donne un moyen beaucoup plus riche d'exprimer les points d'injection et les fèves à injecter.