Ich habe versucht, einen Pointcut zu definieren, der allen Methoden in einer Klasse entspricht, aber es hat nicht funktioniert. Ich habe mich bemüht, den Grund herauszufinden. Und ich fand schließlich den Fehlerpunkt des Pointcut-Ausdrucks, den ich definiert habe.Was bedeuten zwei aufeinanderfolgende Sternchen in Pointcut Ausdruck?
Folgendes ist der Anfang dessen, was ich zuerst definiert habe. (Funktioniert nicht)
@Pointcut("execution(** membership.data.MemberRepository.*(..))")
Als ich gewußt hätte, die aufeinanderfolgenden zwei Sternchen in „Ausführung (**“ jede Zugriffsmodifikator und jeden Rückgabetyp, aber es nie einige Methoden angepasst, die irgendeine Art von Rückgabetypen hat dies wie:
public List<MemberVO> findByName(String name) { ...
Auf der anderen Seite, angepasst es andere wie folgt aus:
public String print(String str) { ...
und folgendes der Anfang der richtigen Möglichkeiten, es zu definieren, die ich herausgefunden habe diese Spiel. die oben genannten zwei Methodensignaturen und funktionieren gut.
@Pointcut("execution(public * membership.data.MemberRepository.*(..))")
@Pointcut("execution(* membership.data.MemberRepository.*(..))")
Was habe ich vermisst? Ich bemühte mich sehr, die Antwort zu finden, aber sie erschien nie. Bitte lassen Sie mich die genaue Bedeutung von wissen „Ausführung (**“
. Zugabe: Die vollständige Quelle der Aspekt Klasse
@Aspect
public class PerformanceLogger {
@Pointcut("execution(* membership.data.MemberRepository.*(..))")
public void performance() {}
@Around("performance()")
public Object watchPerformance(ProceedingJoinPoint jp) {
try {
long st = System.nanoTime();
Object obj = jp.proceed();
System.out.println(jp.toShortString() + " called :" + (System.nanoTime() - st));
return obj;
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
}
Vielleicht ein Leerzeichen zwischen den beiden '*'? – Andreas
@Andreas Ich habe versucht, ein Leerzeichen zwischen den beiden wie folgt zu setzen: "execution (* * .." und es verursachte eine Exception beim Initialisieren des Aspect-Beans mit dem Pointcut-Ausdruck. – ParkCheolu
Warum teilen Sie nicht den vollständigen Pointcut und Methodensignaturen? Auf diese Weise erhalten Sie keine aussagekräftigen Antworten. Bitte lernen Sie [wie Sie eine Frage zu SO stellen können] (http://stackoverflow.com/help/how-to-ask) und stellen Sie [minimal, complete, und verifizierbares Beispiel] (http://StackOverflow.com/Help/Mcve). Danke. Oh, und übrigens: '**' hat überhaupt keine Bedeutung. Das kann ich dir schon sagen. Dein Problem ist in Der Teil, den du vor uns versteckst – kriegaex