Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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.

The question is quite old but... FYI: you can automatically check that on apiwave.

By learning with past changes we see that com.google.inject.Inject can be replaced by javax.inject.Inject.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top