4 Stimmen

AspectJ - warum Annotationen anstelle eines AJC-Compilers verwenden?

Wir können sowohl den @AspectJ-Annotationsstil zur Definition von Aspekten verwenden als auch die AspectJ-Java-Erweiterungssprache, für die wir den ajc-Compiler verwenden müssen.

Aus welchen Gründen sollte man den Anmerkungsstil anstelle von ajc verwenden? Mir scheint, dass durch die Verwendung des Anmerkungsstils eine Menge Funktionalität aufgegeben wird, aber nicht viel (wenn überhaupt) gewonnen wird, außer dass man ajc nicht verwenden muss (was ist so schlimm daran, ajc verwenden zu müssen?)

Könnte mich bitte jemand über dieses Thema aufklären?

4voto

Adam Gent Punkte 45977

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.

2voto

Mikita Belahlazau Punkte 15091

Es ist nicht der einfachste und beste Weg, einen zusätzlichen Schritt in den Bauprozess einzubauen. Vor allem, wenn Sie ein großes Projekt haben. Sie gehen weg von allen Java-Tools und IDE-Unterstützung, die möglicherweise nicht unterstützt *.aj Syntax.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X