SpringBoot利用Aop列印入參出參日誌

2021-09-25 23:31:52 字數 1418 閱讀 4960

以前寫**不會用aop的時候,記錄入參出參的日誌列印都是在controller中完成的,每個controller的方法開始之前先列印個日誌,然後方法返回之前再列印一行日誌,雖然以前也感覺到這個**比較冗餘,也知道aop可以實現日誌列印,但是思維固話了,也習慣了,也就得過且過了。

直到接到上任同事留下的專案,日誌沒有對入參出參做統一的列印,線上出現問題的時候定位比較困難,所以覺得對他的**加上統一的入參出參日誌,由於controller比較多,不想乙個個的加,所以就想到了利用aop來實現這個功能

首先在springboot的專案裡面引入aop的依賴

org.springframework.boot<

/groupid>

spring-boot-starter-aop<

/artifactid>

<

/dependency>

下面的類可以直接拿來用,只需要改下切入點的類名的路徑

@aspect

@component

@slf4j

public

class

logaspect

;/**

* 方法之前執行,日誌列印請求資訊

* @param joinpoint joinpoint

*/@before

("requestlog()"

)public

void

dobefore

(joinpoint joinpoint)

]",username);

}*///列印請求引數,如果需要列印其他的資訊可以到request中去拿

log.

info

("requestparam:{}"

, arrays.

tostring

(joinpoint.

getargs()

));}

/** * 方法返回之前執行,列印才返回值以及方法消耗時間

* @param response 返回值

*/@afterreturning

(returning =

"response"

,pointcut =

"requestlog()"

)public

void

doafterrunning

(object response)

]",response )

;//列印請求耗時

log.

info

("request spend times : [{}ms]"

,system.

currenttimemillis()

-starttime.

get())

;}}

Springboot如何使用AOP

切面的包 1 springboot 不自帶aop 需要自己新增依賴 org.springframework.bootgroupid spring boot starter aopartifactid dependency 2 直接 aspect寫切面類就行了1 連線點 可以理解為需要被增強的方法 2...

在SpringBoot中配置aop

aop作為spring的乙個強大的功能經常被使用,aop的應用場景有很多,但是實際的應用還是需要根據實際的業務來進行實現。這裡就以列印日誌作為例子,在springboot中配置aop 已經加入我的github模版中 經過那麼長時間的過程,我們也慢慢體會到,在spingboot專案中新增元素是非常方便...

Spring Boot 之優雅使用 AOP

aop為aspect oriented programming的縮寫,意思是面向切面程式設計,通過預編譯的方式和執行時動態 實現程式功能的統一維護的一種技術。利用aop可以對業務邏輯進行分離,降低耦合度,提高可重用性,提高開發效率。主要用途 日誌記錄 事務處理 異常處理 安全處理 效能統計 在spr...