AspectJ - obtenir une référence à la classe de jointure et au nom
Je suis en utilisant le @AspectJ de style pour la rédaction des aspects, à gérer les logs dans notre application. Fondamentalement, j'ai une coupe transverse (pointcut) configurer comme suit:
@Pointcut("call(public * com.example..*(..))")
public void logging() {}
puis une, avant et après avis de la sorte:
@Before("logging()")
public void entering() {...}
...
@After("logging()")
public void exiting() {...}
Je veux créer un journal dans ces méthodes dans le format suivant:
logger.trace("ENTERING/EXITING [" className + "." + methodName "()]");
Le problème est que je ne sais pas comment faire pour obtenir une référence à la classe et les noms de méthode. J'ai essayé:
joinPoint.getThis().getClass()
mais ce qui semble le retour de l'appelant nom de la classe.
class A {
public void a() {
B.b();
}
}
class B {
public void b() {
...
}
}
le résultat suivant du journal
ENTERING [A.b()]
quelqu'un peut-il donner un peu d'aide sur la façon d'obtenir le véritable joinpoint la classe et le nom de la méthode
source d'informationauteur smauel
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
joinPoint.getTarget().getClass()
. Puisque vous êtes à l'aide de conseils à un appel de rejoindre le point, l'objet de votre intérêt est la cible de l'appel.peut aider quelqu'un: Utiliser le code ci-dessus pour obtenir la Classe demandée, la méthode et les arguments.