国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > Java > 正文

Spring Aop之AspectJ注解配置實(shí)現(xiàn)日志管理的方法

2024-07-13 10:17:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近項(xiàng)目要做一個(gè)日志功能,我用Spring Aop的注解方式來(lái)實(shí)現(xiàn)。

創(chuàng)建日志注解

package com.wyj.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 日志注解 *  *  * @author:WangYuanJun * @date:2016年8月26日 下午8:25:35 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface SysLog { String action() default "";//動(dòng)作}

創(chuàng)建切面通知類(lèi)

記錄操作的方法名,參數(shù)和花費(fèi)的時(shí)間,使用環(huán)繞通知

package com.wyj.aspect;import java.lang.reflect.Method;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.aspectj.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;/** * 日志切面通知 *  *  * @author:WangYuanJun * @date:2016年8月26日 下午10:28:57 */@Aspect@Componentpublic class SysLogAspect { @Autowired private SysLogService sysLogService; /**  * 切入點(diǎn)  */ @Pointcut("@annotation(com.wyj.annotation.SysLog)") public void pointCut() {} /**  * 環(huán)繞通知  *   * @param joinPoint  * @return  * @throws Throwable  */ @Around("pointCut()") public Object aroud(ProceedingJoinPoint joinPoint) throws Throwable {  // 開(kāi)始時(shí)間  long beginTime = System.currentTimeMillis();  // 執(zhí)行目標(biāo)方法  Object result = joinPoint.proceed();  // 執(zhí)行時(shí)長(zhǎng)(毫秒)  long time = System.currentTimeMillis() - beginTime;  // 保存日志  saveSysLog(joinPoint, time);  return result; } /**  * 保存日志  *   * @param joinPoint  * @param time  */ private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {  MethodSignature signature = (MethodSignature) joinPoint.getSignature();  Method method = signature.getMethod();  SysLogEntity sysLogEntity = new SysLogEntity();  SysLog sysLog = method.getAnnotation(SysLog.class);  if (sysLog != null) {   // 注解上的描述   sysLogEntity.setOperation(sysLog.action());  }  // 獲取目標(biāo)類(lèi)名  String className = joinPoint.getTarget().getClass().getName();  // 獲取方法名  String methodName = signature.getName();  sysLogEntity.setMethod(className + "." + methodName + "()");  // 請(qǐng)求的參數(shù)  Object[] args = joinPoint.getArgs();  if (args != null && args.length != 0 && args[0] != null) {   sysLogEntity.setParams(args[0].toString());  }  sysLogEntity.setTime(time);  // 保存系統(tǒng)日志  sysLogService.save(sysLogEntity); }}

掃描和啟動(dòng)aop注解

Spring,Aop,AspectJ,注解配置,日志管理

日志注解的應(yīng)用

Spring,Aop,AspectJ,注解配置,日志管理

效果

Spring,Aop,AspectJ,注解配置,日志管理

以上這篇Spring Aop之AspectJ注解配置實(shí)現(xiàn)日志管理的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 满洲里市| 高邮市| 定安县| 巴林右旗| 黄龙县| 托克托县| 瑞丽市| 仁怀市| 偃师市| 建水县| 云梦县| 正阳县| 治多县| 威海市| 陵川县| 桂林市| 无锡市| 信宜市| 汽车| 漠河县| 新野县| 黑水县| 辽宁省| 霞浦县| 嘉善县| 盐城市| 亳州市| 崇文区| 沈阳市| 丹寨县| 遂溪县| 咸宁市| 宁津县| 章丘市| 滦平县| 上饶市| 炎陵县| 星子县| 涪陵区| 丰县| 漳平市|