Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Spring Framework Grundkurs

Was ist aspektorientierte Programmierung?

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Möglichkeiten der aspektorientierten Programmierung haben der objektorientierten Programmierung wieder völlig neuen Schwung gegeben, durch weit bessere Modularisierung anhand von Aspekten.

Transkript

Haben Sie sich schon immer einmal gefragt, was ist aspektorientierte Programmierung? Oder wie steht objektorientierte Programmierung im Kontrast dazu? Anders als vielleicht erwartet ist aspektorientierte Programmierung auch keine eigene Sache sondern lediglich komplementär. Was nun also die Zusammenhänge zwischen objektorientierter Programmierung und aspektorientierter Programmierung sind möchte ich Ihnen in den nächsten Minuten darlegen. Was zeichnet denn nun objektorientierte Programmierung im Besonderen aus? Und warum wird objektorientierte Programmierung noch heute immer bevorzugt? Der wichtigste Aspekt ist wohl die Wiederbenutzbarkeit. Das bedeutet, dass es Verantwortungen gibt z. B. ist eine Klasse genau für eine Funktionalität verantwortlich und kapselt alle Methoden und Variablen die dafür notwendig sind. Viele dieser Implementierungen haben auch immer nur eine einzige Vererbungshierarchie, bilden also nicht die Möglichkeiten von Merfachvererbung ab. Ausgehend von den Prinzipien der Klassenschachtelung wurden weiterhin viele andere Konstrukte der Modularität gebaut. Eine typische Architektur hierbei ist die Kapselung von Business-Logik, Datenpersistenz und Benutzeroberfläche. Von der Trennung her ist das prinzipiell erstmal ganz sinnvoll. Allerdings gibt es einige Vorgänge die sich diese Muster nicht unterordnen können. Ein Beispiel hierfür ist die Implementierung von Logging-Mechanismen. Logging zeichnet sich dadurch aus, dass man eigentlich an jeder Stelle im Code in die Konsole oder eine Datei schreibt welcher Vorgang gerade ausgeführt wird. Da eben dies an vielen verschiedenen Stellen stehen muss führt das zu sehr redundantem Code, der schlecht wartbar ist, denn wenn man den Logging-Mechanismus prinzipiell einmal verändern möchte, muss man nun an jeder Stelle in den Code gehen und den Logging-Mechanismus verändern. Ein ähnliches Prinzip ist bei Sicherheitsmechanismen. Was so viel heißt wie wenn andere Nutzer auf meine Anwendung zugreifen möchten. Um völlige Sicherheit gewährleisten zu können, müsste ich nun an jeder Stelle meines Codes, d. h. in der Business-Logik, in der Datenpersistenz und auch in der Benutzeroberfläche sicherstellen, dass der jeweilige Nutzer gerade eine korrekte Authentifikation besitzt und zusätzlich auch die korrekte Autorisierung hat. Der Normalfall indessen ist, dass man nur Sicherheit auf der Benutzeroberfläche hat und sobald diese Sicherheit einmal überwunden wurde alle anderen Mechanismen auf Business-Logik und Datenpersistenz nicht greifen, da sie schlicht und einfach nicht implementiert werden. Ausgehend von der Annahme, dass der Benutzer ohnehin nicht an der Benutzeroberfläche vorbeikommt. Das ist nun das Aufgabenfeld, das AOP, also aspektorientierte Programmierung, zu lösen versucht. Die Problemstellungen, die sich aus den eben genannten Beispielen ergeben sind also die Verteilung von Code, der eigentlich gleich ist, aber an vielen Stellen neu definiert werden muss und die Vermischung, bei der also Aspekte wie Sicherheit oder Logging in Code wie beispielsweise Benutzeroberfläche oder Business-Logik hineingebracht werden, wo sie eigentlich gar nicht hingehören. Die Lösung, die man mit AOP nun anstrebt, ist es in der Lage zu sein, zentral Aspekte zu definieren. Aspekte sind also solche Dinge wie Logging Sicherheit und viele andere, die automatisch an alle anderen Orte wo sie benötigt werden verteilt werden. Anhand des Beispiels von Logging würde man nun an einer Stelle definieren, immer dann, wenn bestimmte Methoden aufgerufen werden, soll in das Log geschrieben werden, dass diese Methoden aufgerufen wurden. Gegebenenfalls sollte auch noch der Rückgabewert mitgeschrieben werden. Genau diese Anweisung möchte man nun also zentral definieren und automatisch an allen Stellen einfügen lassen. Um nur nochmal klarzustellen. Aspektorientierte Programmierung ist im Gegensatz zu vielen anderen Programmierparadigmen kein eigenes Paradigma, sondern lediglich eine Erweiterung zum herkömmlichen objektorientierten Programmieren. Wichtig ist an der Stelle vor allem auch, dass man die bestehenden Teile des Codes und der Logik nicht verändern muss um AOP nutzen zu können, sondern man kann AOP definitiv anweisen bestimmte Änderungen von selbst vorzunehmen. Die Vorteile, die sich nun aus der Nutzung von aspektorientierter Programmierung ergeben sind deutlich bessere Modularisierung, denn externe Funktionalitäten wie Sicherheit und Logging können nun als separate Module betrachtet werden. Außerdem verbessert sich die Anpassbarkeit denn durch diese Schachtelung ist es nun möglich, zu jedem Zeitpunkt im Entwicklungszyklus Aspekte hinzuzufügen oder zu entfernen. Das macht es auch deutlich einfacher, z. B. Sicherheit bei der Entwicklung im eigenen System auszuschalten. Ein weiterer interessanter Punkt ist noch, dass Abhängigkeiten sich nun außerhalb der jeweiligen Logik befinden. Zum Beispiel könnte man für die Implementierung von Sicherheitsmechanismen auf bestimmte Frameworks zurückgreifen und die Abhängigkeiten zu genau diesen Frameworks liegen dann nicht mehr in der Business-Logik, sondern lediglich in dem Aspekt. Besonders für viele Prinzipien der herkömmlichen Entwicklung gibt es Anwendungsfälle für aspektorientierte Programmierung. Eine der Kernfunktionalitäten von Spring Framework greift z. B. genau darauf zurück. Das ist das Transaktionsmanagement. Mit Hilfe von AOP kann nun also sichergestellt werden, dass alle Operationen, die nun am Stück bei einer Transaktion durchgeführt werden innerhalb derselben Transaktion durchgeführt werden. Dafür ist es also nicht mehr notwendig auf der Datenbank eine Transaktion zu starten sondern lediglich den Hinweis von einem Keyword, dass es sich um eine Transaktion handelt. Ein weiteres Beispiel ist die Implementierung von Sicherheit. Durch die Nutzung eines Aspektes ist die Sicherheit auch global gegeben. Das bedeutet wenn an einer Stelle die herkömmliche Sicherheit schlechter implementiert ist, als an einer anderen Stelle ist das mit aspektorientierter Programmierung nicht mehr möglich. Ähnlich den Prinzipien von Logging können auch sogenannte Audits oder Überwachung mithilfe aspektorientierter Programmierung völlig unkompliziert zum bestehenden Code hinzugefügt werden. Das betrifft auch besonders Fälle, wie z. B. einen Geldtransfer oder ähnliche Vorgänge, denn solche Vorgänge würden im Normalfall vom normalen Logging nicht erfasst werden, da sie die Applikation per se nicht betreffen, sind aber trotzdem als Information relevant. Eine weitere Möglichkeit ist das Abfangen von Events, also Dingen, die dadurch angestoßen werden dass Nutze bestimmte Dinge tun. Klickt also ein Nutzer zu oft auf einen bestimmten Button, könnte man ihn so ausloggen. Auch dieses Prinzip ist ähnlich, nur redundant, wenn es auf jedem Button implementiert werden würde. Manchmal eignet sich aspektorientierte Programmierung aber auch um Fehler im eigenen Code festzustellen. So kann man über alle Instanzen und alle Methoden hinweg erhalten als auch Variablen abfangen und mitprotokollieren. Und der wohl klassischste Aspekt ist das Logging, das am meisten von objektorientierter Programmierung profitieren kann. Sie sahen nun also wie aspektorientierte Programmierung objektorientierte Programmierung komplementiert und welche Vorteile sich daraus ergeben 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!