我有一个需求,我需要围绕内部方法调用放置一个方面,内部是指
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