AOP mit Spring Framework

Eine der Schlüsselkomponenten von Spring Framework ist das Aspect oriented programming (AOP)Rahmen. Bei der aspektorientierten Programmierung wird die Programmlogik in verschiedene Teile zerlegt, die als sogenannte Anliegen bezeichnet werden. Die Funktionen, die mehrere Punkte einer Anwendung umfassen, werden aufgerufencross-cutting concernsDiese Querschnittsthemen sind konzeptionell von der Geschäftslogik der Anwendung getrennt. Es gibt verschiedene Beispiele für Aspekte wie Protokollierung, Prüfung, deklarative Transaktionen, Sicherheit, Caching usw.

Die Schlüsseleinheit der Modularität in OOP ist die Klasse, während in AOP die Einheit der Modularität der Aspekt ist. Mithilfe der Abhängigkeitsinjektion können Sie Ihre Anwendungsobjekte voneinander entkoppeln, und mit AOP können Sie Querschnittsthemen von den betroffenen Objekten entkoppeln. AOP ist wie Trigger in Programmiersprachen wie Perl, .NET, Java und anderen.

Das Spring AOP-Modul bietet Interceptors zum Abfangen einer Anwendung. Wenn beispielsweise eine Methode ausgeführt wird, können Sie vor oder nach der Methodenausführung zusätzliche Funktionen hinzufügen.

AOP-Terminologien

Bevor wir mit AOP arbeiten, sollten wir uns mit den AOP-Konzepten und -Terminologien vertraut machen. Diese Begriffe sind nicht spezifisch für Spring, sondern beziehen sich auf AOP.

Sr.Nr. Bedingungen & Beschreibung
1

Aspect

Dies ist ein Modul mit einer Reihe von APIs, die Querschnittsanforderungen erfüllen. Beispielsweise würde ein Protokollierungsmodul als AOP-Aspekt für die Protokollierung bezeichnet. Eine Anwendung kann je nach Anforderung eine beliebige Anzahl von Aspekten haben.

2

Join point

Dies stellt einen Punkt in Ihrer Anwendung dar, an dem Sie den AOP-Aspekt einbinden können. Sie können auch sagen, dass dies der tatsächliche Ort in der Anwendung ist, an dem mithilfe des Spring AOP-Frameworks eine Aktion ausgeführt wird.

3

Advice

Dies ist die eigentliche Aktion, die entweder vor oder nach der Ausführung der Methode ausgeführt werden muss. Dies ist ein tatsächlicher Code, der während der Programmausführung durch das Spring AOP-Framework aufgerufen wird.

4

Pointcut

Dies ist eine Reihe von einem oder mehreren Verbindungspunkten, an denen ein Rat ausgeführt werden soll. Sie können Punktschnitte mithilfe von Ausdrücken oder Mustern angeben, wie wir in unseren AOP-Beispielen sehen werden.

5

Introduction

In einer Einführung können Sie den vorhandenen Klassen neue Methoden oder Attribute hinzufügen.

6

Target object

Das Objekt wird durch einen oder mehrere Aspekte beraten. Dieses Objekt ist immer ein Proxy-Objekt, das auch als empfohlenes Objekt bezeichnet wird.

7

Weaving

Beim Weben werden Aspekte mit anderen Anwendungstypen oder Objekten verknüpft, um ein empfohlenes Objekt zu erstellen. Dies kann zur Kompilierungszeit, Ladezeit oder zur Laufzeit erfolgen.

Arten von Ratschlägen

Frühlingsaspekte können mit fünf Arten von Ratschlägen funktionieren, die wie folgt erwähnt werden:

Sr.Nr. Beratung & Beschreibung
1

before

Führen Sie Ratschläge vor der Ausführung einer Methode aus.

2

after

Führen Sie nach der Ausführung der Methode Ratschläge aus, unabhängig vom Ergebnis.

3

after-returning

Führen Sie Ratschläge nach der Ausführung einer Methode nur aus, wenn die Methode erfolgreich abgeschlossen wurde.

4

after-throwing

Führen Sie Ratschläge nach der Ausführung einer Methode nur aus, wenn die Methode durch Auslösen einer Ausnahme beendet wird.

5

around

Führen Sie Ratschläge aus, bevor und nachdem die empfohlene Methode aufgerufen wurde.

Implementierung benutzerdefinierter Aspekte

Feder unterstützt die @AspectJ annotation style Ansatz und die schema-basedAnsatz zur Implementierung benutzerdefinierter Aspekte. Diese beiden Ansätze wurden in den folgenden Abschnitten ausführlich erläutert.

Sr.Nr. Ansatz & Beschreibung
1 XML-Schema basiert

Aspekte werden mithilfe der regulären Klassen zusammen mit der XML-basierten Konfiguration implementiert.

2 @AspectJ basiert

@AspectJ bezieht sich auf einen Stil zum Deklarieren von Aspekten als reguläre Java-Klassen, die mit Java 5-Annotationen versehen sind.