Question 1
Inside a Spring-managed bean, public method m1() calls this.m2(), and m2() is matched by an @Around aspect. Does the advice run for that internal call? ```java @Service public class OrderService { public void m1() { this.m2(); // internal self-invocation } public void m2() { // ... matched by an @Around aspect } } ```
A. No — self-invocation goes through 'this', bypassing the proxy, so the advice does not fireCorrect answer
An internal this.m2() call targets the real object directly and never passes through the proxy that carries the advice, so no advice runs — a classic self-invocation gotcha (Spring Framework 5.3 Reference — Understanding AOP Proxies).
B. Yes — Spring weaves the advice directly into the bean's class, so any call triggers it
This assumes bytecode weaving into the class itself; proxy-based Spring AOP does not modify the target class, so an internal call finds no advice woven in.
C. Yes, but only because m2() is public
Method visibility does not change the routing of an internal call: whether m2() is public or not, this.m2() still bypasses the proxy, so the advice does not fire.
D. Only if m2() is declared private
Private methods are not eligible for proxy-based advice at all, so making m2() private would guarantee the advice never runs rather than enable it.
Explanation
Spring AOP applies advice through a proxy that wraps the bean, so only calls that arrive via that proxy are intercepted. When a method calls another method on the same instance through 'this', the call goes straight to the underlying object and never crosses the proxy boundary, so no advice fires for the internal call.