是的,你可以。我不熟悉您当前使用的语法。但是对于Aspectj来说,应该是:
public aspect InterceptStringBuilders {
StringBuilder around(StringBuilder target) :
call(public StringBuilder append(String)) &&
!within(InterceptStringBuilders) &&
target(target)
{
if(target.length() == 0)
{
target.append("!!");
}
else if(target.length() == 1 || target.charAt(0) != '!' || target.charAt(1) != '!')
{
target.insert(0, "!!");
}
return proceed(target);
}
}
连接点是
public StringBuilder append(String)
你需要切入点
target
以公开StringBuilder,以便您可以强制它以“”开头!!此外,还需要切入点
!within(interceptStringBuilders)
以确保不会从方面本身截获对StringBuilder的调用。
我想您使用的语法类似于:
"call(public StringBuilder append(String) && !within(LoggingAspect) && target(StringBuilder)"