2016-07-20 19 views
1

Im Frühjahr aop doc, heißt es:Unterschied zwischen @Target und @annotation

@Target - Grenzen passende Punkte zu verbinden (um die Ausführung von Methoden wenn Frühling AOP verwendet), wobei die Klasse des Objekts ausführt hat eine Annotation des gegebenen Typs

@annotation - Grenzen passenden Punkte zu verbinden, in dem der Gegenstand der Punkt verbinden (Methode in Spring AOP ausgeführt wird), die gegeben hat Annotation

Ich denke, @Target treffen zu, wenn das Objekt die angegebene Anmerkung wie

@MyAnnotation 
public class Foo {} 

während @annotation die Anmerkung auf Methode entsprechen hat, wie:

public class Foo { 

    @MyAnnotation 
    public void doSomething() {} 
} 

Ist mein Verständnis richtig?

+1

Ja, Ihr Verständnis ist hier richtig. Ihre eigene Antwort unten ist nicht. – kriegaex

Antwort

0

ich diese Frage auf dieser issue Basis eröffnet, gab wilkinsona die Antwort:

Der wesentliche Unterschied besteht darin, dass @Target den Laufzeittyp übereinstimmt, während @annotation die statisch deklarierten Typ entspricht.

+0

Ich stimme nicht zu. Der Hauptunterschied besteht darin, was Sie im Beispielcode Ihrer eigenen Frage beschreiben. Du hast die Antwort also die ganze Zeit gewusst. Das nächste Mal vielleicht versuchen Sie einfach, was passiert. – kriegaex