56

Is it true that javax.inject annotations can function as direct replacements for com.google.inject?

So that, if I replaced all my current guice/gin annotations with those from javax.inject, my app would compile and run just fine?

First, does javax.inject cover all the bases that google.inject cover?

Blessed Geek
  • 21,058
  • 23
  • 106
  • 176

3 Answers3

57

Yes, it will work fine. In fact the author of guice (Bob Lee) is a spec-lead for the javax.inject specification.

javax.inject.Inject does not have the optional attribute, so if you want an optional dependency, you'd have to use the guice annotation.

Bozho
  • 588,226
  • 146
  • 1,060
  • 1,140
13

Actually, I have chosen to refrain from switching to javax.inject, because I find the spec much minimalistic in comparison to what Guice provides (which I use):

  • @Optional as mentioned by @Bozho
  • @ImplementedBy which is very useful when you want to reduce the number of explicit bindings (for code clarity) and when you want to be able to easily override the default @ImplementedBy binding if you need (e.g. for integration tests).

There are probably others but for me these 2 are showstoppers already.

jfpoilpret
  • 10,449
  • 2
  • 28
  • 32
7

See JSR-330 Integration on Guice's site.

earcam
  • 6,662
  • 4
  • 37
  • 57