As of the 4.0-betas you can do
binder().requireAtInjectOnConstructors();
This will cause Guice to refuse to JIT bind default constructors. It
will only notice constructors marked with @Inject. I think this is a
more workable solution, as it doesn't require that you modify code to
have Guice ignore it.
cheers,
Christian.
On 19 Jun 2014, at 22:05, Geoff Groos wrote:
Hey guys,
I've personally been burned a couple times now by adding a dependency
that
I really shouldn't have, but because that dependent had a default
constructor, Guice let me get away with it, leaving me to sort out the
rather bizarre consequences. I didnt really mind since I'd learned my
lesson, but as the project goes forward configuring guice is becoming
an
increasingly common dev task, so I'd like to shield me and my team
from
this bug in the future, since, in our configuration, it's fairly easy
to
run into.
What I'd like is something along these lines:
public class ModelObjectThatHasSensitiveLifeCycle{
@NeverInject
public ModelObjectThatHasSensitiveLifeCycle(){
}
}
The idea being that, upon seeing the @NeverInject constructor, guice
will
refuse to instance it, giving an error message to the effect of "bind
a
custom provider or supply an existing instance".
I suppose I could use static factory that just hits a private default
constructor, but I dont really like imposing a convention on our devs
because a library wont cooperate, I'd rather have an annotation that
speaks
directly to the problem. Further conventions aren't as strong as red
characters in std:err.
I've tried using your the introspection SPI to do what I'm looking
for, but
I'm a little lost on your domains terminology, so I think I'm throwing
in
the towel.
Heres a little bit of code I'd like to be able to run if I could
manage it:
https://gist.github.com/Groostav/df57208770a6bd6a1c3d
cheers,
-Geoff
--
You received this message because you are subscribed to the Google
Groups "google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-guice/23c467a1-a256-434a-bc6e-c7fcd9c37677%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Christian Gruber :: Google, Inc. :: Java Core Libraries :: Dependency
Injection
email: [email protected] :::: mobile: +1 (646) 807-9839
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-guice/D243C38C-72E2-46B9-853F-02C8274F4ECB%40google.com.
For more options, visit https://groups.google.com/d/optout.