spring 3.0 aop Pointcut ist nicht wohlgeformt: Fehler 'Namensmuster' wird erwartet

9

Das Folgende ist mein Pointcut und rate Deklaration

%Vor%

Ich bekomme den folgenden Fehler

%Vor%

Ich stecke hier fest, irgendwelche Zeiger

    
user463008 30.09.2010, 15:50
quelle

3 Antworten

15

Sie vermissen den Rückgabetyp:

%Vor%

und Sie müssen die Argumentnamen binden, etwa so:

%Vor%

Beispiellösung

Service-Schnittstelle:

%Vor%

Implementierungsklasse:

%Vor%

Spring AOP-Aspekt: ​​

%Vor%

Spring Context XML:

%Vor%

Hauptklasse zum Testen:

Hier ist eine Hauptmethode, um den gesamten Prozess zu testen. Es startet einen Spring ApplicationContext ohne XML-Konfiguration , wobei das obige XML die Service-Bean und den Aspekt definiert (es stellt sich heraus, dass die Lösung ohne XML nur funktionierte, weil ich AspectJ Weben angeschaltet hatte, weiß ich nicht) Welche Beans muss ich einschließen, um aspectj-autoproxy zu aktivieren, also verwende ich jetzt ClassPathXmlApplicationContext mit diesem minimalen XML-Code:

%Vor%

Ausgabe:

%Vor%

Damit sollten Sie beginnen. Grundsätzlich gilt: Sie müssen sicherstellen, dass die Methoden, die Sie abfangen, von einer Service-Schnittstelle unterstützt werden, wenn Sie JDK-Proxys verwenden (Spring-Standard). Lesen Sie hier Spring AOP Proxy-Mechanismen .

Hinweis:

Wie Sie sehen, binde ich die Methodenargumente an den Aspekt, nicht an den Pointcut, wodurch der Pointcut für Methoden mit unterschiedlichen Argumentsignaturen wiederverwendbar wird. Es wäre aber auch möglich, sie im Pointcut zu binden:

%Vor%     
Sean Patrick Floyd 30.09.2010, 15:55
quelle
0

Sie sollten so schreiben

%Vor%

Achten Sie auf "... (* backend..."

* und sollte ein Leerzeichen verwendet werden.

    
Mr.Strolling 01.04.2012 14:38
quelle
0

Beachten Sie, dass Sie ein ähnliches Verhalten mit der @Before -Anmerkung in org.aspectj.lang.annotation.Before haben.

Sie können den Ausdruck ohne Ausführung Schlüsselwort und ohne Rückgabetyp verwenden:

%Vor%

oder mit beiden:

%Vor%

Sie können jedoch das Schlüsselwort execution nicht verwenden, ohne den Rückgabetyp zu verwenden.

    
trinity 06.06.2016 14:48
quelle

Tags und Links