How does this work when using a provider? And it would probably be a good idea to mention if you use an instance binding interceptors are not applied.
regards Nino 2012/1/6 Stuart McCulloch <[email protected]> > 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. > -- 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.
