On 6 Jan 2012, at 13:24, nino martinez wael wrote: > I know but why wont Guice instrument it, I know it's sort of unmanaged since > I provided the instance. But I would have assumed that the second I bound it > using guice, it would invoke the interceptors.
You asked Guice to bind a specific instance - the only way it could apply AOP to that instance would be to generate a delegating wrapper using CGLIB and wrap that around the given instance. However the binding would then point to the wrapped instance rather than the original instance, which could confuse people who weren't expecting Guice to swap in a different instance under the covers. You would also not see any interception if the application for some reason used the instance that it passed into Guice for binding, rather than the wrapped proxy. The safest approach imho is the one used in Guice, which is to only apply AOP to instances created by Guice. > How can I manually instrument it using the interceptors available to guice? The binding SPI provides enough information to find instance bindings, as well as any interceptor bindings. You can use this information to rewrite the instance bindings to point to wrapped forms of the instances, using whatever AOP library you prefer to delegate to the original instance and invoke the relevant interceptors (as discovered through the SPI). > regards nino > > 2012/1/6 Stuart McCulloch <[email protected]> > On 6 Jan 2012, at 10:47, nino martinez wael wrote: > > > Hi > > > > I've just stumbled across something I think are strange. > > > > I have a GUICE/AOP cache module, when I bind a class using a module, my > > interceptor pickups calls to the methods annotated as wanted. > > > > However if I bind to a instance of the same class it my interceptor never > > gets activated. Why are there a difference, between the two? > > In the first case, Guice is in control of creating the instance so it can > construct it using an instrumented version of the class (using cglib). > > In the second case, you're asking Guice to use an existing instance (as-is) > which won't be instrumented unless you have done this yourself. > > > regards Nino > > > > -- > > 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. > > -- > 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. > > > > -- > 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. -- 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.
