日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

利用AOP+Swagger注解實現(xiàn)日志記錄功能

作者:咖啡不苦** 更新時間: 2022-06-08 編程語言

今日接到一個需求,是關(guān)于對項目的一個操作記錄,想記錄所有的增刪改查,也就是所有的操作?想想該如何實現(xiàn)呢?首先肯定就想到了spring的AOP。那么如何能夠更加頁面化呢?如果對于項目中已經(jīng)使用了swagger,那么利用起來就是一個很好的方式。最終效果圖如下:
在這里插入圖片描述

在這里插入圖片描述

一、AOP及注解

1)何為AOP?

AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態(tài)代理實現(xiàn)程序功能的統(tǒng)一維護的一種技術(shù).AOP是OOP的延續(xù),是軟件開發(fā)中的一個熱點,也是Spring框架中的一個重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對業(yè)務邏輯的各個部分進行隔離,從而使得業(yè)務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發(fā)的效率。

2)@Aspect

把當前類標識為一個切面供容器讀取

3)@Around

環(huán)繞增強,相當于MethodInterceptor

二、swagger及注解

1)何為swagger?

Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同步。Swagger 讓部署管理和使用功能強大的API從未如此簡單。詳情之前文章

2)@ApiOperation

swagger api注解
@ApiOperation(value = “接口說明”, httpMethod = “接口請求方式”, response = “接口返回參數(shù)類型”, notes = “接口發(fā)布說明”;
還有其他的,詳情可見官方文檔

三、合并使用代碼

使用swagger的主要目的就是中文可視化。就如上圖似的。

 /**
     * @param joinPoint:
     * @Author: TheBigBlue
     * @Description: 環(huán)繞通知,攔截controller,輸出請求參數(shù)、響應內(nèi)容和響應時間
     * @Date: 2019/6/17
     * @Return:
     **/
    @Around(executeExpr)
    public Object processLog(ProceedingJoinPoint joinPoint) throws Exception {

        SysOperLog sysOperLog = new SysOperLog();
        Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
        //獲取方法名稱
        String methodName = method.getName();
        //獲取參數(shù)
        Object[] argsInfo = joinPoint.getArgs();
        if (method.isAnnotationPresent(ApiOperation.class)) {
        //獲取swagger上的方法說明信息
        ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);
        sysOperLog.setTitle(apiOperation.value());
        ...省略無數(shù),其他可以直接通過aop獲取
        }

兩者結(jié)合主要就是取值中文描述部分,其他的主要功能其實可以完全靠AOP就能完成,哈哈。

詳細代碼在此點擊下載

原文鏈接:https://blog.csdn.net/huo065000/article/details/125136935

欄目分類
最近更新