最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年01月22日 14:19:51   作者:wangyuanjun008  
下面小編就為大家分享一篇Spring Aop之AspectJ注解配置實現(xiàn)日志管理的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

最近項目要做一個日志功能,我用Spring Aop的注解方式來實現(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)
@Documented
public @interface SysLog {

 String action() default "";//動作

}

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

記錄操作的方法名,參數(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
@Component
public class SysLogAspect {

 @Autowired
 private SysLogService sysLogService;

 /**
  * 切入點
  */
 @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 {

  // 開始時間
  long beginTime = System.currentTimeMillis();

  // 執(zhí)行目標(biāo)方法
  Object result = joinPoint.proceed();

  // 執(zhí)行時長(毫秒)
  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)類名
  String className = joinPoint.getTarget().getClass().getName();

  // 獲取方法名
  String methodName = signature.getName();
  sysLogEntity.setMethod(className + "." + methodName + "()");

  // 請求的參數(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);
 }
}

掃描和啟動aop注解

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

效果

以上這篇Spring Aop之AspectJ注解配置實現(xiàn)日志管理的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA 日常開發(fā)中Websocket示例詳解

    JAVA 日常開發(fā)中Websocket示例詳解

    JAVA |日常開發(fā)中Websocket詳解,WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議,它在Web應(yīng)用中實現(xiàn)了客戶端與服務(wù)器之間的實時數(shù)據(jù)傳輸,本文將詳細(xì)介紹Java開發(fā)中WebSocket的使用,包括基本概念、Java API、使用示例以及注意事項,感興趣的朋友一起看看吧
    2024-12-12
  • System 類 和 Runtime 類的常用用法介紹

    System 類 和 Runtime 類的常用用法介紹

    這篇文章主要介紹了System 類 和 Runtime 類的常用用法,有需要的朋友可以參考一下
    2014-01-01
  • Springmvc自定義類型轉(zhuǎn)換器實現(xiàn)步驟

    Springmvc自定義類型轉(zhuǎn)換器實現(xiàn)步驟

    這篇文章主要介紹了Springmvc自定義類型轉(zhuǎn)換器實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • SpringCloud之Ribbon使用示例解析

    SpringCloud之Ribbon使用示例解析

    這篇文章主要為大家介紹了SpringCloud之Ribbon使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解

    SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解

    這篇文章主要介紹了SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解,因為案例代碼用到了hutool提供的DesensitizedUtil數(shù)據(jù)脫敏工具類,這里要引入hutool的依賴,如果你需要自定義 數(shù)據(jù)脫敏的邏輯,可以不引入這個依賴,需要的朋友可以參考下
    2024-01-01
  • Java中增強for循環(huán)在一維數(shù)組和二維數(shù)組中的使用方法

    Java中增強for循環(huán)在一維數(shù)組和二維數(shù)組中的使用方法

    下面小編就為大家?guī)硪黄狫ava中增強for循環(huán)在一維數(shù)組和二維數(shù)組中的使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java中BigDecimal比較大小的3種方法(??compareTo()、??equals()??和??compareTo()??)

    Java中BigDecimal比較大小的3種方法(??compareTo()、??equals()??和??compar

    這篇文章主要給大家介紹了關(guān)于Java中BigDecimal比較大小的3種方法,方法分別是??compareTo()、??equals()??和??compareTo()??,在Java中使用BigDecimal類來進行精確的數(shù)值計算,需要的朋友可以參考下
    2023-11-11
  • Java中實現(xiàn)日志記錄的方案總結(jié)

    Java中實現(xiàn)日志記錄的方案總結(jié)

    在平時使用到一些軟件中,比如某寶或者某書,通過記錄用戶的行為來構(gòu)建和分析用戶的行為數(shù)據(jù),這就需要使用到日志系統(tǒng)來存儲或者記錄數(shù)據(jù),小編為大家整理了幾種Java日志方案,希望對大家有所幫助
    2024-12-12
  • 淺談java中BigDecimal的equals與compareTo的區(qū)別

    淺談java中BigDecimal的equals與compareTo的區(qū)別

    下面小編就為大家?guī)硪黄獪\談java中BigDecimal的equals與compareTo的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解

    SpringMVC中MultipartFile上傳獲取圖片的寬度和高度詳解

    本篇文章主要介紹了SpringMVC中MultipartFile上傳獲取圖片的寬度和高度,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論

安化县| 余干县| 乌兰察布市| 巴林左旗| 元阳县| 上高县| 南郑县| 张家川| 南康市| 凌云县| 虹口区| 永泰县| 大冶市| 布拖县| 太白县| 台北市| 深泽县| 绥芬河市| 沙湾县| 武平县| 婺源县| 都昌县| 砀山县| 乌兰察布市| 怀宁县| 和顺县| 东乡族自治县| 黑水县| 陆河县| 铁岭县| 疏勒县| 台江县| 武胜县| 蒙城县| 深州市| 大方县| 鄂托克前旗| 古蔺县| 呼伦贝尔市| 峨边| 老河口市|