Heim  >  Artikel  >  Java  >  Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

(*-*)浩
(*-*)浩nach vorne
2019-09-11 16:33:111942Durchsuche

Erster Eindruck von AOP

Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

Geben Sie zunächst eine professionellere Terminologie (von Baidu) an:

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一
维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利
用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效
率。

Lassen Sie uns ein relativ leicht verständliches Beispiel geben:

Um die Aspektprogrammierung zu verstehen, müssen Sie zunächst verstehen, was Aspekte sind. Teilen Sie eine Wassermelone mit einem Messer in zwei Hälften, und der Schnitt ist die Schnittfläche. Beim Kochen arbeiten Topf und Herd zusammen, um das Kochen abzuschließen, und Topf und Herd sind die Schnittflächen. Im Web-Layer-Design, Web-Layer -> Gateway-Layer -> Service-Layer -> Datenschicht, ist jede Ebene auch ein Aspekt. Beim Programmieren gibt es Aspekte zwischen Objekten, Methoden und Methoden sowie Modulen.

Wenn wir normalerweise Aktivitäten durchführen, überprüfen wir normalerweise die Gültigkeit der Aktivität für jede Schnittstelle (ob sie beginnt, ob sie endet usw.) und ob für diese Schnittstelle eine Benutzeranmeldung erforderlich ist.

Nach normaler Logik können wir dies tun.

Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

Das Problem ist, dass je mehr Schnittstellen vorhanden sind, desto mehr Codekopien sind erforderlich. Für einen „faulen Menschen“ ist das unerträglich. OK, schlagen Sie eine öffentliche Methode vor, und jede Schnittstelle ruft diese Schnittstelle auf. Es gibt hier ein bisschen den Geschmack von geschnittenen Nudeln.

Es gibt auch ein Problem. Obwohl ich den Code nicht jedes Mal kopieren muss, muss jede Schnittstelle diese Methode aufrufen. Es gibt also das Konzept des Aspekts, und ich füge die Methode irgendwo in den Schnittstellenaufruf ein (Punktschnitt). Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

Auf diese Weise muss sich die Schnittstelle nur um das spezifische Geschäft kümmern und muss nicht auf andere Logik oder Verarbeitung achten, die nicht das Anliegen der Schnittstelle ist. Detaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)

Das rote Kästchen ist aspektorientierte Programmierung.

2. Verwandte Konzepte in AOP

Nachdem ich die obigen Beispiele gelesen habe, denke ich, dass jeder bereits einen groben Prototyp von AOP im Kopf hat, aber was ist mit Es gibt einige Unklarheiten in Bezug auf Begriffe wie die oben genannten Aspekte. Lassen Sie uns als Nächstes die zugehörigen Konzepte in AOP erklären. Nur wenn wir die Konzepte in AOP verstehen, können wir das Wesentliche von AOP wirklich verstehen.

Hier ist eine professionellere Definition des Konzepts:

Aspect: Die Aspect-Deklaration ähnelt einer Klassendeklaration in Java und wird in Aspect enthalten sein Pointcuts und entsprechende Hinweise.

Verbindungspunkt: Stellt einen klar definierten Punkt im Programm dar, der normalerweise Methodenaufrufe, Zugriff auf Klassenmitglieder und die Ausführung von Ausnahmebehandlungsblöcken usw. umfasst. Er kann auch andere Verbindungspunkte verschachteln.

Pointcut: Stellt eine Reihe von Verbindungspunkten dar, die entweder durch logische Beziehungen kombiniert oder durch Platzhalter, reguläre Ausdrücke usw. konzentriert werden. Es definiert den entsprechenden Hinweis, wo er auftritt.

Hinweis (Verbesserung): Der Hinweis definiert die spezifischen Operationen, die von den in Pointcut definierten Programmpunkten ausgeführt werden sollen. Er verwendet Vorher, Nachher und Umher, um zu unterscheiden, ob der Code vor, nach oder anstelle jedes gemeinsamen Punkts ausgeführt wird . .

Ziel: Das in Advice verwobene Zielobjekt.

Weben: Der Prozess der Verbindung von Aspekten mit anderen Objekten und der Erstellung eines empfohlenen Objekts

Geben Sie dann ein leicht verständliches Beispiel:

Nachher Wenn ich das oben genannte theoretische Wissen lese, glaube ich, dass viele Freunde immer noch das Gefühl haben, dass das Konzept von AOP immer noch vage ist und dass sie die verschiedenen Konzepte in AOP nicht vollständig verstehen. Tatsächlich ist dies normal, da die Konzepte in AOP nicht sehr klar sind . Es gibt so viele Konzepte, dass es mir viel Mühe gekostet hat, sie zu klären

Lassen Sie mich die Beziehung zwischen Aspekt, Gelenkpunkt, Punktschnitt und Beratung in AOP vergleichen.

Nehmen wir an, dass es einmal einen kleinen Landkreis namens Java gab. In einer dunklen und stürmischen Nacht ereignete sich in diesem Landkreis ein sehr listiger Mord, und zum Glück war nichts aufzuspüren Lao Wang, der gerade von nebenan zurückgekehrt war, entdeckte zu diesem Zeitpunkt zufällig den Mordprozess des Mörders. Da es jedoch spät war und der Mörder maskiert war, konnte Lao Wang das Gesicht des Mörders nicht klar erkennen. Der Magistrat des Bezirks Java erteilte den Soldaten, die das Tor bewachten, einen Befehl: Jeder Mann, bei dem festgestellt wurde, dass er 2,10 m groß ist, muss verhaftet und verhört werden. Natürlich wagten die Soldaten nicht, dem Befehl des Bezirksrichters zu widersprechen, also mussten sie es tun Verhaftung aller qualifizierten Personen, die die Stadt betreten und verlassen.

Werfen wir einen Blick auf die obige Kurzgeschichte und darauf, was AOP mit Korrespondenz zu tun hat.

Zunächst wissen wir, dass sich der Gelenkpunkt in Spring AOP auf den Ausführungspunkt aller Methoden bezieht und der Punktschnitt eine Beschreibungsinformation ist, die den Gelenkpunkt ändert. Durch Punktschnitt können wir bestimmen, welche Gelenkpunkte möglich sind Entsprechend dem oben genannten Beispiel können wir eine einfache Analogie zu den Menschen in einem kleinen Landkreis in Java herstellen, und Pointcut entspricht der Anschuldigung von Lao Wang Der Mörder ist ein Mann, etwa 2,10 Meter groß, und auf die Taten des Verdächtigen wurde der Rat angewendet, der der Beschreibung von Lao Wang entspricht: Verhaften Sie ihn zum Verhör.

Warum ist diese Analogie? Möglich?

Joint Point: Menschen in einem kleinen Landkreis in Java: Denn laut Definition sind Joint Points alle Kandidatenpunkte, die in Advice verwoben werden können, alle Methodenausführungspunkte In unserem Beispiel oben ereignete sich der Mord in einem kleinen Landkreis. Es liegt nahe, dass jeder in diesem Landkreis ein Verdächtiger sein könnte.

Pointcut: Männlich, etwa 7 Fuß 5 Zoll groß: Wir wissen, dass Ratschläge in alle Methoden (Verbindungspunkte) eingebunden werden können, aber wir möchten nicht in alle Methoden Ratschläge einbinden. Die Rolle von Pointcut besteht darin, eine Reihe von Regeln zum Abgleichen von Verbindungspunkten bereitzustellen und den Verbindungspunkten Ratschläge hinzuzufügen Auch wenn der Bezirksrichter die Regeln einhält, weiß er, dass er nicht alle Menschen im Bezirk verhaften kann, weil er die Bedingungen erfüllt Der Mörder ist ein Mann und etwa 2,10 Meter groß. Es ist ein modifizierendes Prädikat. Es schränkt den Umfang des Mörders ein Regel sind Verdächtige und müssen festgenommen und verhört werden. Hinweis: Festnahme und Verhör sind eine Aktion, das heißt, dieser Java-Code wirkt auf die durch Punktschnitt definierten Punkte. Im Vergleich zu unserem Beispiel wirkt sich die Aktion des Ergreifens zum Verhör auf diejenigen aus, die Männer befriedigen, Menschen in einer kleinen Kreisstadt in Java, die etwa sieben Fuß fünf Zoll groß sind.

Aspekt: Aspekt ist eine Kombination aus Point Cut und Rat, daher können wir hier eine Analogie ziehen: „Laut den Hinweisen von Lao Wang wird alles, wenn festgestellt wird, dass ein Mann 7 Fuß 5 Zoll groß ist, verhaftet und verhört.“ kann als Aspekt betrachtet werden.

Schließlich gibt es ein Diagramm, das die Beziehung zwischen diesen Konzepten beschreibt:

3. Einige andere InhalteDetaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht)Joinpoint in AOP kann viele Typen haben: Konstruktormethodenaufruf, Feldeinstellung und -erfassung, Methodenaufruf, Methodenausführung, Ausnahmebehandlung und -ausführung, Klasseninitialisierung. Das heißt, im Konzept von AOP können wir unsere benutzerdefinierten Ratschläge in die oben genannten Joinpoints einbinden, aber nicht alle oben genannten Joinpoints sind in Spring implementiert. Um genau zu sein, unterstützt Spring nur Joinpoints vom Methodenausführungstyp.

Beratungstyp

Bevor-Beratung, Beratung, die vor dem Verbindungspunkt ausgeführt wird, kann die Ausführung der Verknüpfung jedoch nicht verhindern Punkt, es sei denn, es tritt eine Ausnahme auf (d. h. im Before-Advice-Code können wir nicht künstlich entscheiden, ob der Code im Join-Point weiter ausgeführt werden soll)

After-Return-Advise, ausgeführt, nachdem ein Join-Point den Normal-Advice zurückgegeben hat

nach dem Auslösen von Ratschlägen, Ratschlägen

nach (endgültigen) Ratschlägen, die ausgeführt werden, wenn ein Verbindungspunkt eine Ausnahme auslöst, unabhängig davon, ob ein Verbindungspunkt normal beendet wird oder eine Ausnahme auftritt, wird er als Ratschläge ausgeführt.

Um Rat, Rat, der vor dem Verbindungspunkt und nach dem Verlassen des Verbindungspunkts ausgeführt wird. Dies ist der am häufigsten verwendete Rat.

Einführung, Einführung kann neue Objekte zu den ursprünglichen Objekteigenschaften hinzufügen Methoden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von Spring - AOP detaillierte Erklärung (AOP-Übersicht). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen