Pointcuts AspectJ - получить ссылку на класс и имя точки соединения

Я использую стиль @AspectJ для написания аспектов, чтобы вести журнал в нашем приложении. В основном у меня есть pointcut, настроенный так:

@Pointcut("call(public * com.example..*(..))")
public void logging() {}

, а затем совет до и после, например:

@Before("logging()")
public void entering() {...}
...
@After("logging()")
public void exiting() {...}

Я хочу создать журнал с помощью этих методов в следующем формате:

logger.trace("ENTERING/EXITING [" className + "." + methodName "()]");

Проблема в том, что я не знать, как получить ссылку на имена классов и методов. Я пробовал:

joinPoint.getThis().getClass()

, но похоже, что это возвращает имя класса вызывающего.

class A {
    public void a() {
        B.b();
    }
}


class B {
    public void b() {
        ...
    }
}

приведет к следующему журналу

ENTERING [A.b()]

, может ли кто-нибудь помочь в том, как получить фактический класс точки соединения и имя метода

19
задан smauel 21 February 2011 в 17:42
поделиться