Récemment, le projet doit faire une fonction de journalisation, que j'utilise la méthode d'annotation Spring AOP pour implémenter.
Créer des annotations de journal
package com.wyj.annotation; import java.lang.annotation.documented; importer java.lang.annotation.elementtype; import java.lang.annotation.retention; import java.lang.annotation.retentionpolicy; import java.lang.annotation.target; / ** * log annotation * * @aoth: wangyuge; / ** * log annotation * * * @Date: 26 août 2016 à 8:25:35 PM * / @ Target (elementType.Method) @retention (RetenderPolicy.Runtime) @DocumedPublic @Interface Syslog {String Action () Default ""; // Action}Créer une classe de notification facette
Enregistrez le nom de la méthode, les paramètres et le temps passé sur l'opération, en utilisant des notifications surround
package com.wyj.aspect; import java.lang.reflect.method; import org.aspectj.lang.proceedingjoinpoint; import org.aspectj.lang.annotation.around; import org.annotation.pointcut; import; import; org.aspectj.lang.reflect.methodsignature; import org.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype.component; import com.wyj.annotation.syslog; import com.wyj.entity.syslogentity; importer; com.wyj.service.syslogService; / ** * Notation de la section du journal * * * @author: wangyuanjun * @date: 26 août 2016 à 10:28:57 PM * / @ aspect @ ComponentPublic Class Syslogaspect {@Autowired Private SyslogSenvice SyslogService; / ** * Point de saisie * / @Pointcut ("@ annotation (com.wyj.annotation.syslog)") public void PointCut () {} / ** * Notification surround * * @param joinpoint * @return * @throws throws * / @around ("Pointcut ()") Objet public (procédure joinpoint joinpoint) throws throws throws throws throw System.Currenttimemillis (); // Exécuter la méthode cible Résultat de l'objet = joinpoint.proceed (); // Temps d'exécution (millisecondes) Long Temps = System.CurrentTimemillis () - Begintime; // Enregistrer le journal SaveSysLog (joinpoint, time); Résultat de retour; } / ** * Enregistrer le journal * * @param joinpoint * @param time * / private void saveSysLog (procédingjoinpoint joinpoint, long time) {Methodsignature signature = (méthodignature) joinpoint.getSignature (); Méthode méthode = signature.getMethod (); Syslogentity syslogentity = new syslogentity (); Syslog syslog = method.getAnnotation (syslog.class); if (syslog! = null) {// Description sur l'annotation syslogentity.setOperation (syslog.action ()); } // Obtenez la classe cible = joinpoint.getTarget (). GetClass (). GetName (); // Obtenez le nom de méthode String MethodnName = Signature.getName (); syslogentity.setMethod (className + "." + méthodyname + "()"); // Object de paramètre demandé [] args = joinpoint.getargs (); if (args! = null && args.length! = 0 && args [0]! = null) {syslogentity.setparams (args [0] .toString ()); } syslogentity.settime (temps); // Enregistrer le journal système syslogService.save (syslogentity); }}Annotation AOP et démarrer
Application de l'annotation du journal
Effet
La méthode de configuration d'annotation AspectJ de Spring AOP ci-dessus pour implémenter la gestion du journal est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.