Pointcut für annotierte Methoden oder Methoden in annotierten Klassen
Ich brauche Ein Punkteschnitt für Methoden in Klassen, die mit @X oder mit @X @ kommentierten Methoden versehen sin. Ich auchneed das Anmerkungsobjekt. Wenn sowohl die Klasse als auch die Methode mit @ beschriftet siIch ziehe es vor, die Annotation der Methode als Argument zu erhalten.
Ich habe Folgendes versucht, wodurch eine "inkonsistente Bindung" -Warnung erzeugt wird. (Warum sie nicht einfach auf null setzen?)
@Around("@annotation(methodLevelX) || @within(classLevelX)")
public Object advise(ProceedingJoinPoint pjp, X methodLevelX, X classLevelX)
Das Folgende erzeugt eine "mehrdeutige Bindung von Parameter (n) x über '||' in pointcut "warnung. (Was meiner Meinung nach nicht unbedingt Sinn macht: Warum nicht die erste kurzgeschlossene Bewertung binden?)
@Around("@annotation(x) || @within(x)")
public Object advise(ProceedingJoinPoint pjp, X x)
Das Teilen des vorherigen Versuchs in zwei führt natürlich zu zwei Methodenaufrufen, wenn Klassen- und Methodenanmerkungen vorhanden sind.
Ich weiß, ich könnte einfach die Methode und Klasse mit Reflektion und meiner gewünschten Anmerkung mit einem Punktschnitt wie diesem erhalten:
@Around("@annotation(com.package.X) || @within(com.package.X)")
Aber ich würde es vorziehen, nicht zu.
Gibt es eine "One Pointcut, eine Methode, ein Annotation-Argument", eine Lösung für meine Anforderung, die keine Reflektion erfordert?