Grundlegendes zum Proxy-Verhalten von Spring AOP
In Spring AOP werden Aspekte auf Methodenaufrufe angewendet, die über Proxy-Objekte erfolgen, und nicht direkt auf die Implementierungsklassen . Wenn Sie eine AOP-Konfiguration für eine Bean definieren, erstellt Spring einen Proxy für diese Bean, der Methodenaufrufe abfängt und an die eigentliche Implementierung umleitet.
Das Problem:
Im bereitgestellten Code wird Methode2() direkt innerhalb von Methode1() derselben Klasse aufgerufen, wobei der Proxy vollständig umgangen wird. Daher wird der AOP-Aspekt nicht aufgerufen.
Lösung:
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
Definieren Sie separate Beans für Methode1 und Methode2:
Externes AOP-Framework verwenden:
Spring-Proxy-Mechanismus:
Spring verwendet einen Proxy-Mechanismus, um AOP zu implementieren . Wenn eine Bean in eine andere injiziert wird, wird ein Proxy erstellt, der Methodenaufrufe verarbeitet. Dieser Proxy delegiert Aufrufe nicht nur an die eigentliche Bean, sondern fängt sie auch für potenzielle AOP-Funktionen ab.
Weitere Details und alternative Lösungen finden Sie im Spring-Dokumentationsabschnitt „Grundlegendes zu AOP-Proxys“.
Das obige ist der detaillierte Inhalt vonWarum gilt mein Spring-AOP-Aspekt nicht für einen Methodenaufruf innerhalb derselben Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!