Spring Framework Grundkurs

AOP mit Spring

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
AOP kann mit Spring sowohl mithilfe von Annotationen als auch durch XML konfiguriert werden. Spring zeigt daher ein paar Eigenheiten bei der Anwendung von AOP.

Transkript

Um Spring AOP anwenden zu können ist es notwendig, die jeweilige Syntax kennenzulernen. Wie nun die konkreten Konzepte der aspektorientierten Programmierung Programmierung im Spring Framework umgesetzt sind und wie man davon Gebrauch machen kann ist Teil dieses Videos. Um einen Aspekt deklarieren zu können, beginnt man immer mit einer Klasse. Diese Klasse beinhaltet immer idealerweise aus Namenskonventionsgründen auch das Wort "Aspect" am Ende. Allein das reicht dem Framework allerdings nicht um zu erkennen, dass es sich um einen Aspekt handelt. Dafür gibt es die sogenannte Aspect-Annotation. Diese würde man nun oberhalb der Klasse deklarieren. Wie zu erwarten ist, handelt es sich dabei um die jeweilige Annotation aus dem ursprünglichen AspectJ-Projekt. Allein die Angabe des Aspects reicht aber dem Framework nicht, um zu erkennen, dass es sich dabei um eine Bean handelt. Für die automatische Erkennung ist es weiterhin auch notwendig einerseits AOP Autoproxy zu aktivieren und außerdem die Nutzung der Component-Deklaration damit das Framework weiß, dass es sich hierbei um eine Bean handelt. Wenn man nun also die Klasse, bzw. den Aspekt definiert hat, würde man als nächstes die Methoden oder auch Advices definieren. Die Advices beziehen sich also nun auf die jeweilige Referenzmethode eines anderen Objekts, z. B. im Falle eines Kontos gibt es die Methode kontoBelasten. Die erste Art und Weise wie die Methode aufgerufen werden kann ist mit Before. Das heißt, in dem Moment wo eine Person diese Methode aufruft wird anhand der Advice der jeweilige Aspekt aufgerufen. Eine weitere Variante ist, sobald es eine Exception gibt. Diese Variante nennt man auch After Throwing. Diese wird also immer dann ausgeführt, wenn eine Methode mit einer Exception bzw. mit einer Ausnahme beendet wird. Die herkömmlichste Variante ist, sobald die Methode einen Rückgabewert geliefert hat und dementsprechend beendet wurde. Diese bezeichnet man auch als After Returning. Allerdings gibt es auch den Sonderfall in dem man sowohl informiert werden möchte wenn die Methode durch Exception beendet wurde als auch regulär. Diese bezeichnet man ähnlich dem try-catch-Prinzip als After Finally, was so viel heißt wie, egal wie die Methode beendet wird, es findet immer der Aufruf statt. Zusätzlich gibt es immer noch einen Sonderfall. Diese Sonderfall-Art des Advices bezeichnet man auch als Around. Diese ist wesentlich mächtiger als die anderen, denn sie steuert den kompletten Programmfluss. Sie umschließt also den Methodenaufruf vollständig, sowohl von Beginn an als auch bis zum Ende. Anders als bisher, wo der Methodenaufruf immer gesichert ist, also der Aufruf von "kontoBelasten", kann die Around-Advice sich auch vorbehalten, die Methode überhaupt auszuführen und einen alternativen Rückgabewert zu liefern. Prinzipiell lassen sich zwar damit auch alle anderen Advice-Arten abbilden aber allein aus Performancegründen ist es nicht immer ideal Around zu benutzen. Im Regelfall geht eine Advice auch immer mit einem Pointcut einher. In diesem Beispiel sieht man nun also einerseits die Advice-Art Before und den jeweiligen Pointcut, der mithilfe eines Strings ausgedrückt wird. Der Pointcut-Ausdruck gibt also nun den Ort des jeweiligen Pointcuts an, also den sogenannten Schnittpunkt. In dem hier gezeigten Beispiel heißt das so viel wie, dass der Aufruf jeder Methode die das Wort get beinhaltet zukünftig hier drin, bzw. dort, wo der Pointcut referenziert wird ausgeführt wird. Hier sieht man auch bereits ein besonderes Prinzip der Wiederverwendung von Pointcuts. Durch die Deklaration von Pointcut kann ein Pointcut bzw. dessen Angabe wiederverwendet werden, indem man dann die jeweilige Methode referenziert, die diesen Pointcut beinhaltet. Tatsächlich wird nun also für den Pointcut das hier verwendet, statt dieser Angabe. Die Alternative dazu dazu ist also die direkte Angabe des Pointcuts innerhalb der Advice. Hier als Beispiel ist der Pointcut nun innerhalb der Advice Before definiert. Sie haben bereits die verschiedenen Arten von Advices kennengelernt. Die Arten sind in Form der Annotationen relativ ähnlich, nur dass sie kein Leerzeichen beinhalten und Großschreibung beim jeweilig zweiten Wort. Die Around-Advice ist auch hier in diesem Sinne eine weitere Besonderheit Denn anders als bisher nimmt die Around-Advice einen sogenannten ProceedingJoinPoint Dieser erlaubt es der Around-Advice den Programmfluss zu kontrollieren und die jeweilig auszuführende Methode zu bestimmen. Der ProceedingJoinPoint, der als Argument in diese Methode hineinkommt kann dann über den Aufruf von proceed dafür genutzt werden um die Methode tatsächlich auszuführen. Sollte man diesen Aufruf nicht machen, wird auch entsprechend die jeweilige Methode aus der echten Logik nicht ausgeführt. Des Weiteren kann die Around-Advice nun mit dem Rückgabewert selbst arbeiten, denn der Aufruf von proceed gibt den originalen Rückgabewert zurück und der Rückgabewert der Advice ist dann der tatsächliche Rückgabewert den auch die jeweils aufrufende Methode bekommt. Wichtig ist auch zu berücksichtigen, dass eventuell Exceptions bzw. Throwables entstehen können. Wenn man sich das Ganze noch einmal beispielhaft anhand des Kontobeispiels vorstellt, würde das bedeuten, ich würde den "kontoBelasten"-Aufruf mithilfe der Around-Advice umschließen und könnte nun beispielsweise den Rückgabewert der der Summe entsprechen würde einen weiteren Geldbetrag hinzufügen und diesen tendenziell falschen Geldbetrag dem jeweiligen Aufrufer des "kontoBelasten" zurückgeben. Sie wissen nun, wie Sie zukünftig mithilfe der API von Spring AOP und den jeweiligen Annotationen Aspekte, Advices und Pointcuts deklarieren können.

Spring Framework Grundkurs

Steigen sie zum Java-Champion auf und meistern Sie den Umgang mit dem Spring Framework.

2 Std. 4 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Spring Framework Spring Framework 3
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.09.2014

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!