Hi..

Guice uses "wrapping proxies" to resolve circular injections.

However, trying to kill those problems by moving a constructor injected
parameter to a setter still does not seem to fix it.


I just made a MINOR change to a Module, not the rest of the code (I actually
went to use an instance-binding for one interface, instead of using a
"normal" binding), and *BANG* the whole damn system suddenly explodes with
319 injection errors. What The Fsck?!

And the "funny thing" is that the explosion is in a setter! (The setter
invokes some method on the instance which is injected - which IS NO
instance, just an empty shell of a proxy). How is that even possible, I
wonder? Why aren't at least the setter-injections deferred to the end of the
graph resolve algorithm? Or maybe there simply are no graph-resolve
algorithm - one do a simple linear (or random!) walk through the
configuration, "completing" each instance as one go along, using proxies at
any yet unresolved corner?


*My vote*, if it suddenly got tallied by someone, is firmly on the side of
letting the proxy-hell be configurable: For backward compatibility, let
Guice work as it does. But by setting some flag somewhere, Guice will NEVER
use proxies, and FAIL if there is any circularity.

*I even believe Bob is with me on this one. :-)*
*
*

PS: Make no mistake: I love Guice.

PPS: All the 319 errors are from the same method. It seems every possible
injection in the whole system ends up needing the instance which crashes.

Thanks,
Endre.

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en.

Reply via email to