Recientemente, el proyecto debe realizar una función de registro, que utilizo el método de anotación Spring AOP para implementar.
Crear anotaciones de registro
paquete com.wyj.annotation; import java.lang.annotation.documented; import java.lang.annotation.ElementType; import java.lang.annotation.retention; import java.lang.annotation.etententPolicy; import java.lang.annotation.target;/** * log annotation * @Date: 26 de agosto de 2016 a las 8:25:35 pm */@Target (elementType.method) @Retention (retenciónPolicy.Runtime) @DocumentedPublic @Interface syslog {String Action () default ""; // Action}Crear una clase de notificación faceta
Registre el nombre del método, los parámetros y el tiempo dedicado a la operación, utilizando notificaciones envolventes
paquete com.wyj.spect; import java.lang.reflect.method; import org.spectj.lang.procedingjoinpoint; import org.aspectj.lang.annotation.around; import ovpectj.lang.annotation.aspect; import og.aspectj.lang.annotation.pointcut; importación; org.spectj.lang.reflect.methodsignature; import org.springframework.beans.factory.annotation.aUtowired; import org.springframework.stereotype.component; import com.wyj.annotation.syslog; import com.wyj.entity.syslogentity; import com.wyj.service.syslogservice;/** * Notificación de la sección de registro * * * @author: wangyuanjun * @date: 26 de agosto de 2016 a las 10:28:57 pm */ @aspecto @componentpublic class syslogaspect {@aUtowired syslogservice syslogservice syslogService; / ** * Punto de entrada */ @PointCut (" @annotation (com.wyj.annotation.syslog)") public void Pointcut () {}/ ** * Notificación envolvente * * @param unePoint * @return * @throws showable */ @Around ("punto ()") Objeto público alrededor (procediendo un punto de unión) lanzando »@throws showable */ @Araround (" punto () ") Public Object alrededor (procediendo un punto de unión) lanzas {///////////// iniest System.CurrentTimemillis (); // Ejecutar el objeto de método de destino resultado = unkePoint.proced (); // Tiempo de ejecución (milisegundos) Long Time = System.CurrentTimemillis () - BegIntime; // Guardar el registro SavesysLog (unión de unión, tiempo); resultado de retorno; } / ** * Guardar el registro * * @param unión de unión * @param time * / private void saveSysLog (procedingjoinpoint unkinpoint, largo tiempo) {Methodsignature Signature = (MethodeSignature) unePoint.getSignature (); Método método = firma.getMethod (); Syslogentity syslogentity = new Syslogentity (); Syslog syslog = método.getAnnotation (syslog.class); if (syslog! = null) {// Descripción en la anotación syslogentity.setOperation (syslog.action ()); } // Obtenga el objetivo className = unkePoint.getTarget (). GetClass (). GetName (); // Obtener la cadena de nombre del método MethodName = firature.getName (); syslogentity.setMethod (className + "." + MethodName + "()"); // Objeto de parámetro solicitado [] args = unkepoint.getArgs (); if (args! = null && args.length! = 0 && args [0]! = null) {syslogentity.setParams (args [0] .ToString ()); } syslogentity.setTime (tiempo); // Guardar el sistema de registro SyslogService.save (syslogentity); }}Escanear y comenzar la anotación de AOP
Aplicación de la anotación de registro
Efecto
El método de configuración de anotación SuppectJ de AOP de Spring anterior para implementar la administración de registros es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.