Replacing com.google.inject with javax.inject
JavaGwtDependency InjectionGuiceGwt GinJava Problem Overview
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?
Java Solutions
Solution 1 - Java
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.
Solution 2 - Java
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.