When using Spring AOP to create a proxy for a class using NameMatchMethodPointcutAdvisor and BeanNameAutoProxyCreator does this essentially proxy every call to the object, but only apply the advice to the matched methods, or somehow create a Proxied object that only has those methods and uses the normal object for the calls that are supposed to be intercepted?
The way, I think I understand it is that it does proxy every call to the object but then only calls the Advisor on the methods that match – but I can’t find a good example/post to confirm this.
Depends on the technique used. (It is configurable by an attribute
proxy-target-classin your aop config)JDK dynamic proxies are proxies by interface – each methods of the interface goes through the proxy, as you said, and if it matches happens to be an “advised” method, the advisor is applied. Otherwise it is delegated to the original object
CGLIB proxies are effectively subclasses defined at runtime of your concrete classes. I can’t be sure in this, but I assume only the “advised” methods are overridden, the rest retain the definition of the superclass.
However, no matter which mechanism is used: