Est-il vrai que les annotations javax.inject peuvent fonctionner comme des remplacements directs pour com.google.inject?
Donc, si je remplaçais toutes mes annotations guice/gin actuelles par celles de javax.inject, mon application se compilerait et fonctionnerait très bien?
Tout d'abord, javax.inject couvre-t-il toutes les bases couvertes par google.inject?
Oui, cela fonctionnera bien. En fait, l'auteur de guice (Bob Lee) est un spec-lead pour le javax.inject
spécification.
javax.inject.Inject
n'a pas l'attribut optional
, donc si vous voulez une dépendance facultative, vous devrez utiliser l'annotation guice.
En fait, j'ai choisi de ne pas passer à javax.inject, car je trouve la spécification très minimaliste par rapport à ce que fournit Guice (que j'utilise):
@Optional
comme mentionné par @Bozho@ImplementedBy
ce qui est très utile lorsque vous souhaitez réduire le nombre de liaisons explicites (pour la clarté du code) et lorsque vous souhaitez pouvoir remplacer facilement la valeur par défaut @ImplementedBy
binding si vous avez besoin (par exemple pour les tests d'intégration).Il y en a probablement d'autres mais pour moi ces 2 sont déjà des showstoppers.
La question est assez ancienne mais ... FYI: vous pouvez automatiquement vérifier cela sur apiwave .
En apprenant avec les changements passés, nous voyons que com.google.inject.Inject
peut être remplacé par javax.inject.Inject
.