以前寫**不會用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...