AOP steht für Aspect Oriented Programming und ist eine Programmiermethode, die sich auf Querschnittsthemen konzentriert, die über mehrere Klassen verteilt sind.
[Gründliche Einführung in die Entwicklung von Spring Java-Anwendungen mit Spring Framework](https://www.amazon.co.jp/Spring gründliche Einführung in die Entwicklung von Java-Anwendungen mit Spring-Framework-NTT Data Co., Ltd./dp/4798142476/) Ich werde die wichtigen Punkte zur Erklärung von AOP zusammenfassen. * (Die Anzahl der Seiten im Buch wird angezeigt, damit Sie später darauf zurückblicken können.) *
Über typische Begriffe von AOP (S.59)
Aspect Das Modul selbst, das die Querschnittsinteressen zeigt, die die Einheit von AOP sind. Beispielsweise werden "Ausgabeprotokoll", "Ausnahmen behandeln", "Transaktionen verwalten" usw. als Aspekt bezeichnet.
Join Point Der Punkt, an dem Aspect ausgeführt wird (beim Ausführen einer Methode, Auslösen einer Ausnahme usw.). Join Point im Frühjahr AOP ist, wenn die Methode ausgeführt wird.
Advice Code, der an einem bestimmten Join Point ausgeführt wird. Wo können Querschnittsthemen umgesetzt werden? Es gibt mehrere Typen wie "Rund", "Vorher" und "Nachher".
Pointcut Ein Ausdruck (Ausdruck), der den auszuführenden Verknüpfungspunkt auswählt. Es kann als eine Gruppe von Verbindungspunkten betrachtet werden. In Spring AOP wird Pointcut durch Bean-Definition und Annotation definiert. Beispielsweise wird entschieden, nur in der Klasse XXController oder nur im Fall des Methodennamens auszuführen, der mit find beginnt. Sie können einen Platzhalter angeben.
Weaving Der Vorgang des Einfügens von Aspect an der entsprechenden Stelle im Anwendungscode. Das Weben wird zur Laufzeit im Frühjahr AOP durchgeführt.
Target Ein Objekt, dessen Verarbeitungsablauf durch AOP-Verarbeitung geändert wurde. Wird manchmal als empfohlenes Objekt bezeichnet.
Die folgenden 5 Ratschläge sind in Spring AOP verfügbar. (S. 60)
Advice | Überblick |
---|---|
Before | Hinweise, die vor dem Join Point ausgeführt werden. |
After Returning | Hinweis, der ausgeführt werden muss, nachdem der Verbindungspunkt normal endet. Wenn eine Ausnahme ausgelöst wird, wird sie nicht ausgeführt. |
After Throwing | Hinweise, die ausgeführt werden, nachdem eine Ausnahme am Join Point ausgelöst wurde. Wenn es normal endet, wird es nicht ausgeführt. |
After | Hinweis, der nach Join Point ausgeführt wird. Es wird unabhängig von der normalen Beendigung oder Ausnahme ausgeführt. |
Around | Ratschläge, die vor und nach dem Join Point ausgeführt werden. |
Eine Beschreibungsmethode, mit der der auszuführende Verknüpfungspunkt durch Schreiben der Ausführung ausgewählt wird, wie im folgenden Quellcode gezeigt. (S.69)
@Aspect
@Component
public class MethodStartLogAspect {
// *Beispiel für Ratschläge, die von einer beliebigen Methode mit dem Klassennamen Controller ausgeführt werden sollen
@Before("execution(* *..*Controller.*(..))")
public void startLog(JoinPoint jp) {
System.out.println("Methodenstart:" + jp.getSignature());
}
}
Verwenden Sie den Ausführungsspezifizierer, wenn Sie den Zielverbindungspunkt ausdrücken, indem Sie das Methodennamensmuster angeben.
execution(* com.example.domain.*Service.find*(..))
/*
Im obigen Beispiel
Der Rückgabewert ist*
Paketname ist com.example.domain
Typ, Klassenname*Service
Methodenname ist find*
Argumente von 0 oder mehr
Repräsentiert.
*/
Die Platzhalter, die im Pointcut-Ausdruck verwendet werden können, lauten wie folgt. (S. 70)
Platzhalter | Erläuterung |
---|---|
* | Grundsätzlich stellt es eine beliebige Zeichenfolge dar, aber wenn ein Paket ausgedrückt wird, repräsentiert es eine beliebige Paket-1-Schicht. Wenn ein Methodenargument ausgedrückt wird, repräsentiert es eine Anzahl von Argumenten. |
.. | Jede Möglichkeit, ein Paket darzustellen(0 oder mehr)Stellt ein Paket dar. Beliebig beim Ausdrücken von Methodenargumenten(0 oder mehr)Stellt ein Zahlenargument dar. |
+ | Durch Angabe nach dem Klassennamen werden die Klasse und alle ihre Unterklassen / Implementierungsklassen dargestellt. |
[Gründliche Einführung in die Entwicklung von Spring Java-Anwendungen mit Spring Framework](https://www.amazon.co.jp/ Gründliche Einführung in die Entwicklung von Spring Java-Anwendungen mit Spring-Framework-NTT Data Co., Ltd./dp/4798142476/)
Recommended Posts