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

學(xué)無先后,達(dá)者為師

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

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

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

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

在這里插入圖片描述

一、AOP及注解

1)何為AOP?

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

2)@Aspect

把當(dāng)前類標(biāo)識(shí)為一個(gè)切面供容器讀取

3)@Around

環(huán)繞增強(qiáng),相當(dāng)于MethodInterceptor

二、swagger及注解

1)何為swagger?

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

2)@ApiOperation

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

三、合并使用代碼

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

 /**
     * @param joinPoint:
     * @Author: TheBigBlue
     * @Description: 環(huán)繞通知,攔截controller,輸出請(qǐng)求參數(shù)、響應(yīng)內(nèi)容和響應(yīng)時(shí)間
     * @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é)合主要就是取值中文描述部分,其他的主要功能其實(shí)可以完全靠AOP就能完成,哈哈。

詳細(xì)代碼在此點(diǎn)擊下載

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

欄目分類
最近更新