Announcement Announcement Module
Collapse
No announcement yet.
AOP on nested method invocations Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • AOP on nested method invocations

    I have a quick question on getting AOP to work on nested method invocations (if this is even possible).

    I have the following example:

    Code:
        public class MyClass {
    
            // Regular method
            public void method_A() {
                 System.out.println(this.getClass());
                 method_B();
            }
    
            // Aspected method
            public void method_B() {
                System.out.println(this.getClass());
            }
        }
    
        public class Test {
            public static void main(String args[]) {
                  MyClass myClass = new MyClass();
                  // Test B - this works properly
                  myClass.method_B();
    
                  // Test A - this does not trigger my aspect
                  myClass.method_A();
            }
        }
    Only method_B() is aspected. I've verified and when an external class calls it, my aspect gets executed.

    However, the call to method_B() from method_A() is not trigerring my Aspect. I debugged into method_A() and as I suspected the value of this variable is MyClass, as opposed to MyClass$EnhancedByCGLIB...

    Is there a way to achieve what I'm trying to do, or do aspects only get triggered when invoked from outside sources.

    I'm using Spring 2.5 with <aop:aspectj-autoproxy proxy-target-class="true"> flag set.
    Last edited by argo516; Apr 7th, 2008, 01:25 PM.

  • #2
    It depends...

    I suggest you read chapter 6 of the reference guide, especially 6.6 it explains how Spring AOP works.

    Spring uses a proxy based approach, which means only externally called methods are intercepted (as you figured out already).

    If you want something else you will need loadtime or compile time weaving.

    Comment

    Working...
    X