1. Vorwort
Ich werde keine Frühlings -AOP einführen. Ich habe viel online gesucht. Jeder, der Spring verwendet hat, kennt das IOC und die AOP von Spring. Wir verwenden oft IOC, aber in unserem eigenen System ist die Verwendung von AOP fast Null. Mit Ausnahme dieser kleinen Überwachungsfunktion, die angewendet wird, werden die anderen im Grunde nicht verwendet. Im Folgenden sortiert der Editor die Lösung für die Verwendung der Spring -AOP -Aufzeichnungsmethode aus, um die Zeit auszuführen. Schauen wir uns an, wenn Sie es brauchen.
2. Lösung
1. traditionelle Methoden
Die einfachste und grobe Methode besteht darin, den Zeitstempel am Anfang und am Ende jeder Methode hinzuzufügen, die Statistiken benötigt, und dann die Differenz zu berechnen. Der Code ist wie folgt:
Long start time = system.currentTimemillis (); // Geschäftscode Long EndTime = System.currentTimemillis (); System.out.println ("Programmlaufzeit:" + (Endtime - StartTime) + "MS"); // AusgabeprogrammlaufzeitDiese Methode erfordert, dass zeitaufwändiger Code zu vielen statistischen Methoden hinzugefügt wird. Diese Codes haben nichts mit dem Kerngeschäft zu tun, sondern werden in großen Mengen wiederholt und überall verstreut, was es schwierig macht, sie zu bewahren.
2. Methoden der tangentorientierten Programmierung
Daher wird nicht empfohlen, den obigen schlechten Geschmackscode zu verwenden. Ich habe lange darüber nachgedacht und plante, die Ideen von Frühling AOP zu verwenden, um diese Funktion zu erfüllen. Ohne weiteres sind der Code und die zugehörigen Erklärungen wie folgt:
import org.apache.commons.logging.log; import org.apache.commons.logging.logfactory; import org.aspespectj.lang.proceedingjoinpoint; import org.aspespectj.lang.annotation.around; import org.aspespectj.lang.annotation.aspep; import org.aspespectj.lang.reflect.methodsignature; import org.springframework.stereotype.Component;/** * Time-consuming spring facet class for detection method execution* Using the class annotated by @Aspect, Spring will treat it as a special bean (a section), that is, it will not dynamically proxy the class itself* @author blinkfox * @date 2016-07-04 */@Aspect@Componentpublic class TimeInterceptor { private static log logger = logFactory.getLog (TimeInterceptor.Class); // eine Minute, das heißt 1000 ms privat statische endgültige long one_minute = 1000; // Der statistische zeitaufwändige Abschnitt der Serviceschicht muss für den String-Typ endgültig sein. Die in der Annotation zu verwendenden Variablen können nur statische konstante Typen der öffentlichen statischen Stringspunkte = "Ausführung (*com.blinkfox.test.service.impl.*.*(..)") "; / ** * zeitaufwändige Ausführung der statistischen Methode um die umgebende Benachrichtigung * @param joinpoint * @return */ @around (Punkt) öffentliches Objekt TimeAround (Proceedingjoinpoint Joinpoint) {// Definieren Sie die Parameter, die erforderlich sind, um das Objekt zurückzugeben und die Methode zu erhalten. Objekt obj = null; Object [] args = joinpoint.getargs (); Long start time = system.currenttimemillis (); try {obj = joinpoint.procece (args); } catch (throwable e) {logger.Error ("Statistikfehler in den Ausführungsausführungen zeitaufwändige Surround-Benachrichtigungen", e); } // Erhalten Sie den Ausführungsmethodenname Long Endzeit = System.currentTimemillis (); MethodyInturature signature = (methodesignature) joinpoint.getSignature (); String methodName = Signature.getDeclaringTypeName () + "." + Signature.getName (); // zeitaufwändige Informationen drucken. Rückkehr obj; } /*** zeitaufwändige Informationen drucken, die die Methodenausführung drucken. Wenn es eine bestimmte Zeit überschreitet, drucken Sie * @param methodName * @param startTime * @param endzeit */ private void printexectime (String methodName, Long Start Time, Long Endime) {Long DiFftime = Endtime - StartTime; if (Diffftime> One_Minute) {logger.warn ("-----" + methodName + "Methode Ausführungszeit:" + Diffftime + "ms"); }}} HINWEIS: Schließlich müssen Sie die von AOP erforderliche Konfiguration in der Datei applicationContext.xml <aop:aspectj-autoproxy/> hinzufügen, damit der Frühling sie erkennen kann.
Zusammenfassen
Bei der oben genannten Verwendung geht es um die Verwendung von Spring AOP, um die Ausführungszeit aufzuzeichnen. Ich hoffe, der Inhalt dieses Artikels wird für das Studium oder die Arbeit aller Hilfe helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.