Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Spring Framework Grundkurs

JoinPoints

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
JoinPoints erlauben es, Informationen aus dem Kontext des Anwendungsflusses sowohl zu lesen als auch zu steuern, womit man beispielsweise den Ablauf der eigenen Anwendung überwachen kann.

Transkript

Haben Sie sich schon immer mal gefragt, wie man beispielsweise von Methodenaufrufen die Argumente mitloggen könnte, oder wie man den Kontrollfluss von Methodenaufrufen beeinflussen kann? Genau das ist mit den Informationen möglich, die der JoinPoint liefern kann. Wie man genau mit diesem arbeitet, ist Teil dieses Beitrags. Grundsätzlich sind zunächst einmal zwei verschiedene Arten JoinPoints zu unterscheiden. Das ist einerseits der reguläre JoinPoint, der immer zutrifft. Dieser beinhaltet Informationen darüber welches Objekt konkret gerade betroffen ist und welche Methode gerade aufgerufen wurde. Genauso lassen sich die Argumente bestimmen. Im Falle einer Around-Advice kann man aber auch den ProceedingJoinPoint nutzen. Dieser baut auf dem JoinPoint auf, hat aber einige zusätzliche Funktionalitäten, wie beispielsweise das Ausführen der Methode, die hätte ausgeführt werden sollen. Der Zweck dieser JoinPoints ist schlicht und einfach die Möglichkeit, den Programmfluss gezielt zu steuern als auch Informationen über den Programmfluss abzurufen und wegschreiben zu können. Die Nutzung dieser JoinPoints möchte ich nun anhand eines Beispiels illustrieren. Zunächst einmal ist es notwendig, dass die richtigen Bibliotheken eingebunden sind. Dazu gehören Spring AOP, Spring Context, AspectJ und der AspectJ-Weaver. Als nächstes muss die Konfiguration von Spring stimmen. Das ist einerseits AspectJ-Autoproxy und gegebenenfalls auch der Component-Scan im Falle, dass man mit Annotationen arbeitet. In der Main-Methode gibt es nun einerseits den HelloWorldService der abgerufen wird, als auch das Bankkonto, für das eine Account-ID bestimmt wird und Geld eingezahlt. Prinzipiell gibt es keine Besonderheiten Das Bankkonto nimmt schlicht und einfach Geld entgegen, meldet auch dementsprechend, dass es Geld bekommen hat, und fügt das zur Account-Balance hinzu. Der HelloWorldService gibt lediglich eine Nachricht zurück. Wenn man die Anwendung nun ausführt, erhält man einerseits die Information, dass Geld geklaut wurde und auf ein Konto eingezahlt wurde, als auch die Log-Nachricht, , dass auf HelloWorldService getMessage aufgerufen wurde. Das Bankkonto, auf das eingezahlt wird ist allerdings nicht das Bankkonto, auf das eingezahlt werden sollte. Dafür verantwortlich ist der StealerAspect. Der StealerAspect hat sein eigenes Bankkonto ein "schweizerNummernKonto". Des Weiteren beinhaltet er eine Around-Advice, die auf dem Bankkonto-Objekt die insertMoney-Funktion abfängt. Über den JoinPoint findet man nun das Argument, das erste in diesem Fall, und schreibt es in die Mengenzahl. Als nächstes gibt er nun aus, dass 200 Euro entwendet wurden und zahlt diese auf das "schweizerNummernKonto" ein. Da kein Aufruf auf JoinPoint und Proceed stattfindet und lediglich der Rückgabe des "true"-Wertes wird im regulären Fall auf dem Bankkonto "4" nichts eingezahlt. Kommt nun allerdings die Nachricht von "schweizerNummernKonto", in dem Fall ist das Target-Objekt das "schweizerNummernKonto", so wird der JoinPoint bzw. die Methode regulär ausgeführt und das Geld entsprechend eingezahlt. So ist es dem Aspekt also gelungen, das Geld einerseits dem anderen Konto zu entwenden bzw. nicht einzuzahlen und dafür auf ein alternatives Konto einzuzahlen. Im LoggingAspect wird nun mitgeschrieben, anhand der Informationen des übergebenen JoinPoints, um welche Klasse es sich handelt über getDeclaringTypeName und die jeweilige Methode getName. Sie sahen nun also, wie Sie mit JoinPoints den Programmfluss gezielt steuern können und welche interessanten Informationen Ihnen der JoinPoint liefern kann.

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!