web-dev-qa-db-fra.com

Remplacement de com.google.inject par javax.inject

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?

48
Blessed Geek

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.

41
Bozho

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.

11
jfpoilpret
6
Tom

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.

4
apiwave