Spring Framework Grundkurs

Grundlegende Begriffe der aspektorientierten Programmierung

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Begriffe wie Advice, JoinPoint oder Pointcut sind nicht sofort klar, wenn es um AOP geht. Hier lernen Sie solche Basics kennen.

Transkript

Einige Begrifflichkeiten der aspektorientierten Programmierung sind essentiell um zu verstehen um was es überhaupt geht. Damit Sie zukünftig auch mitreden können, wenn andere Personen von Pointcuts, JoinPoints, Aspekten und dergleichen reden stelle ich Ihnen diese Begriffe in diesem Video vor. Der wohl wichtigste Begriff der aspektorientierten Programmierung ist der Aspekt. Den Aspekt muss man sich als höchste Art der Kapselung vorstellen, ähnlich also einer Klasse. Der Aspekt sammelt viele verschiedene Anweisungen, die etwas betreffen. Prinzipiell stellt man sich diesen als Modul vor. Ein solches Modul kapselt einheitliches Verhalten über viele verschiedene Objekte hinweg, was im Regelfall Methoden betrifft. Damit ist gemeint, wenn Methoden auf bestimmten Objekten ausgeführt werden greift ein Aspekt um mit diesen Methoden andere Vorgänge durchzuführen. Als Aspekt bezeichnet man also geschachtelte Funktionalitäten wie Sicherheit, Logging und andere Vorgänge. Der nächste Begriff, der sich in einem Aspekt befindet, ist die sogenannte Anweisung oder auch Advice genannt. Vorstellen kann man sich diese ähnlich wie die Methode auf einer Klasse, denn letztendlich bildet sie die implementierte Funktionalität ab z. B. im Falle von Logging, dass sie in die Log-Datei schreibt. Lassen Sie mich also festhalten: Es handelt sich um eine Methode. Und diese Methode wird nun also vor anderen Methoden anderer Objekte ausgeführt, eben von Objekten der Business-Logik. Das heißt die Methode läuft ab einem bestimmten Punkt. Diesen Punkt nennt man auch JoinPoint. Der JoinPoint an sich ist der Einstiegspunkt zu dem eine Methode aus einem Aspekt ausgeführt wird, bevor, danach oder stattdessen der Methode, die in der Business-Logik abgelaufen wäre. Das heißt vor allem, dass sie den regulären Code betrifft, also der Code, der ohne den Aspekt schon da war. Als Beispiel rufe ich nun die Methode TransferiereGeld auf. Um sicherzustellen, dass der Transfer des Geldes gesichert ist würde ich einen Aspekt schreiben, der einen JoinPoint definiert, der genau an dieser Methode ansetzt TransferiereGeld, dann die entsprechende Anweisung ausführt aus dem Aspekt um z. B. sicherzustellen, dass die Benutzerauthentifikation stimmt. Neben dem regulären Methodenaufruf gibt es auch noch einige andere Punkte an denen ein JoinPoint greifen kann, z. B. kann er nur dann starten, falls eine Exception oder Ausnahme auftritt. Damit der JoinPoint weiß, an welcher Stelle er greifen muss, gibt es einen weiteren Begriff, den sogenannten Pointcut. Dabei handelt es sich um einen Abfrageausdruck. Das kann man sich ähnlich wie SQL vorstellen. In SQL spezifiziert man, welche Attribute man von welcher Tabelle abfragen möchte. Mit dem Pointcut definiere ich, welche Methode ich aus der Business-Logik oder auch aus anderen Orten meines regulären Codes mit dem JoinPoint treffen möchte. Es handelt sich um den Ausdruck, der den Ort des JoinPoints spezifiziert. Als Beispiel hierfür könnte ich nun konkret definieren, alle Methoden, die in dem Paket Business ablaufen, sollen zukünftig von meinem Abfrageausdruck erwischt werden. Anhand des JoinPoints wird dann die Anweisung auf dem Aspekt ausgeführt. Solch ein Ausdruck kann nun beispielsweise mithilfe von Wildcards, wie dem "Stern" auch auf mehrere Orte gleichzeitig zutreffen. In diesem Beispiel wird der Ausdruck nun also alle Pakete unter "com.janietz" und alle Pakete darunter und deren Methode main() betreffen. Der nächste wichtige Begriff ist das Ziel oder auch Target genannt. Es definiert das Objekt, bzw. die Klasse oder alle Instanzen dieser Klasse, die von dem Aspekt, bzw. der Advice betroffen sind. Prinzipiell lässt sich festhalten: das Target oder Ziel ist letztendlich nur ein Objekt das von der aspektorientierten Programmierung in irgendeiner Art und Weise verändert wird. Oftmals findet man in diesem Zusammenhang auch den Begriff Advised Object. Damit das Ganze funktionieren kann, muss die Komponente, die die aspektorientierte Programmierung verantwortet nun also auch den Code zur Laufzeit in irgendeiner Form ändern. Den Prozess der Änderung bezeichnet man als Weaving. Mit Weaving wird der Code, der ursprünglich vorher definiert wurde zur Laufzeit oder auch zur Kompilierzeit in irgendeiner Form abgeändert, so dass er dem Aspekt entspricht. Das heißt am Ende entstehen Änderungen, nicht direkt am originalen Java-Code, aber an dem Java-Code er tatsächlich ausgeführt wird. Es gibt nun zwei Arten dieses Weaving-Prozesses. Das ist einerseits zur Kompilierzeit, d. h. man benutzt einen anderen Compiler als den ursprünglichen Java-Compiler um seine Klassen herzustellen. Was an der Stelle passieren würde ist, dass der AspectJ-Compiler und die Funktionalität wie Logging an jeder Stelle wo sie spezifiziert ist anhand des Pointcuts einträgt. Das heißt, was im Hintergrund passiert ist als würde man selbst an jede Stelle den Logging-Mechanismus hineinschreiben. Der Prozess funktioniert ähnlich aber auch zur Laufzeit mit AspectJ oder auch Spring, wo im Prinzip das Gleiche passiert, allerdings ist die Definition nicht in der Klassendatei sondern erst, sobald die Anwendung ausgeführt wird. Der letzte wichtige Begriff in diesem Zusammenhang ist die sogenannte Introduction oder auch Einführung. Anders als es sich zunächst vermuten lässt handelt es sich dabei um eine Erweiterung. Damit ist es also möglich, auf bereits existierende Klassen oder Objekte, Funktionalität hinzuzufügen, die initial nicht definiert wurde. Es wäre also möglich, sowohl neue Methoden als auch Felder in Klassenobjekte hineinzubringen. Aus Sicht der betroffenen Klasse ist es wie, als würde Mehrfachvererbung stattfinden, denn die Objekte dieser Klasse erhalten zukünftig Funktionen und Felder, die vorher nie im Code definiert worden sind. Mit dem soeben vorgestellten Begriffsportfolio sind Sie nun in der Lage künftig über aspektorientierte Programmierung und dessen Begrifflichkeiten mitreden zu 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!