java-内部方法调用的方面

我有一个需求,我需要围绕内部方法调用放置一个方面,内部是指

class Person{ 
        public void outerMethod()
          {
            internalMethod() 
          } 
          // Need an aspect here !!
          public void internalMethod() 
          {
           }
}

我知道使用传统的Spring AOP是不可能的,原生AspectJ是否为此提供了便利?我可以为相同的指针

解决方法:

当然可以:

// match the call in outerMethod
pointcut callInnerMethod() : call(* Person.internalMethod(..));

要么

// match innerMethod itself
pointcut executeInnerMethod() : execution(* Person.internalMethod(..));

您可以将这些建议与之前,之后或周围的建议结合使用:

void before() : callInnerMethod() /* or executeInnerMethod() */ {
    // do something here
}

void around() : callInnerMethod() /* or executeInnerMethod() */{
    // do something here
    proceed();
    // do something else here
}

void after() returning() : callInnerMethod() /* or executeInnerMethod() */{
    // do something here
}

请注意,这是传统的AspectJ语法,即您在.aj文件中使用的语法.您还可以在@AspectJ .java语法中将所有这些结构与不同的语法一起使用.

请咨询AspectJ Quick Reference或阅读AspectJ in Action

上一篇:java-Spring AOP在Tomcat和tcserver中不起作用


下一篇:【Spring】AspectJ:基于注解的声明式AspectJ