Beide Stile ( .aj y @AspectJ ) haben Eigenschaften, die die anderen nicht haben.
In diesem Beitrag erfahren Sie, was die Annotationen leisten können, was das deklarative AspectJ nicht kann: Wie lautet die deklarative Syntax von AspectJ für das Überschreiben eines Arguments?
Le site .aj Die meisten Dateien (außer den oben genannten) können weit mehr. Vor allem können sie ITDs (Inter-Type-Definitionen, auch bekannt als das Hinzufügen von Methoden und Eigenschaften zu Klassen) erstellen.
Der wichtigste Grund für die Verwendung von @AspectJ ist, dass es nicht einmal Compile Time Weaving (CTW) oder Load Time (LTW) erfordert, wenn Sie Spring Proxy AOP-Unterstützung verwenden. Spring ahmt @AspectJ nach, aber zur Laufzeit, indem es Proxys erstellt.
Mir ist aufgefallen, dass Spring, Eclipse (und ich selbst) anscheinend den verstärkten Einsatz von echtem AspectJ fördern. Ich glaube, das liegt daran, dass das Eclipse-Plugin so gut geworden ist. Außerdem kann man mit true AspectJ und der @Configurable-Annotation Spring-Verdrahtung auf instanziierte Beans bekommen. Das ist die Funktionsweise von Spring Roo.
Mit dem Eclipse-AspectJ-IDE-Plugin können Sie die Pointcut-Referenzen auf beide Stile (@ und aj) sehen und sich ein klares Bild davon machen, welche "Magie" hier geschieht.