Heim  >  Artikel  >  Java  >  Ausführliche Erläuterung des Erfahrungsaustauschs mit Aspect zur Implementierung der Methodenein- und -austrittsprotokollierung

Ausführliche Erläuterung des Erfahrungsaustauschs mit Aspect zur Implementierung der Methodenein- und -austrittsprotokollierung

巴扎黑
巴扎黑Original
2017-07-18 15:14:172226Durchsuche
@Aspect
public class Aspect
{

    @Before("execution(* com.test.*.*(..))")
    public void logBefore(JoinPoint joinPoint)
    {
        logEnter.....
    }

    @After("execution(* com.test.*.*(..))")
    public void logAfter(JoinPoint joinPoint)
    {
         logExit.....
    }
}

Frühlingskonfiguration:

<aop:aspectj-autoproxy/>
    
<bean id="aspect" class="com.test.Aspect"></bean>

Da das Projekt während des gesamten Entwicklungsprozesses in Eile war ( Dies ist bei allen Projekten der Fall.) Daher wurde in der Endphase des Projekts festgestellt, dass die Funktion zum Aufzeichnen von Systemprotokollen fehlte. In der Vergangenheit wurde das System direkt in den Code jedes Moduls geschrieben und dann Die Daten werden im Formular gespeichert und ein Teil der Protokolle kann auf der Seite eingesehen werden. Dieses System hat diese Anforderung nicht, daher habe ich darüber nachgedacht, eine systemweite Protokollaufzeichnung zu erstellen. Zu den wichtigsten aufgezeichneten Daten gehören: Operationszeit, Operationsobjekt, Operationsmethode, einige Parameter der Operation und Operationsergebnisse. Zuerst dachte ich sofort daran, Aspekte zu verwenden, um die AOP-Protokollierung zu implementieren. In tatsächlichen Anwendungen stellte ich jedoch fest, dass Aspekte Aktionen nicht auf benutzerfreundliche Weise abfangen können, sondern hauptsächlich zum Abfangen von Unternehmen auf Service-Ebene verwendet werden. Da das System-Framework auf dem SSH-Framework basiert, haben wir schließlich darüber nachgedacht, den in Struts2 integrierten Interceptor Interceptor zu verwenden.

Welcher Abfangjäger?

Ein Interceptor ist ein Objekt, das Aktionsaufrufe dynamisch abfängt. Es bietet einen Mechanismus, der es Entwicklern ermöglicht, Code zu definieren, der vor und nach der Ausführung einer Aktion ausgeführt werden soll, und die Ausführung einer Aktion vor der Ausführung zu verhindern. Es bietet auch eine Möglichkeit, wiederverwendbare Teile der Aktion zu extrahieren. Apropos Abfangjäger: Es gibt ein anderes Wort, das jeder kennen sollte: Abfangkette (Interceptor Chain, in Struts 2 Interceptor Stack genannt). Die Abfangkette besteht darin, Abfangjäger in einer bestimmten Reihenfolge zu einer Kette zu verbinden. Wenn auf eine abgefangene Methode oder ein abgefangenes Feld zugegriffen wird, werden die Interceptoren in der Interceptor-Kette in der Reihenfolge aufgerufen, in der sie zuvor definiert wurden.

Das Prinzip und der allgemeine Prozess des Interceptors

1. Wenn ActionInvocation initialisiert wird, werden alle mit der Aktion verbundenen Interceptors entsprechend der Konfiguration geladen.

  2. Wenn die Action-Implementierung über die ActionInvocation.invoke-Methode aufgerufen wird, wird der Interceptor ausgeführt.

Interceptor trennt viele Funktionen von unserer Aktion, wodurch der Code unserer Aktion erheblich reduziert wird und das unabhängige Verhalten eine gute Wiederverwendbarkeit aufweist. Viele Funktionen von XWork und WebWork werden von Interceptor implementiert. Sie können den von Action verwendeten Interceptor in der Konfigurationsdatei zusammenstellen. Er wird vor und nach der Aktionsausführung in der von Ihnen angegebenen Reihenfolge ausgeführt.


Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Erfahrungsaustauschs mit Aspect zur Implementierung der Methodenein- und -austrittsprotokollierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn