[Java干貨系列]Springboot項(xiàng)目腳手架手把手教程(6)SpringBoot項(xiàng)目AOP統(tǒng)一打印
背景
在實(shí)際Web項(xiàng)目中,我們通常都會(huì)在比如請求進(jìn)來時(shí)或者返回后能夠記錄日志方便日后排查問題等。甚至有時(shí)候我們需要在內(nèi)部的某些方法邏輯執(zhí)行前、執(zhí)行后做一些操作,比如:對參數(shù)進(jìn)行解密,對所有的返回值進(jìn)行加密等。這些與業(yè)務(wù)無關(guān)的操作,傳統(tǒng)做法就是在每個(gè)期望的地方都去手動(dòng)記錄日志,但有了AOP的思想和實(shí)現(xiàn),其實(shí)沒有必要在每個(gè)方法中都寫一遍,這里我們有兩種方式實(shí)現(xiàn),一是自定義個(gè)注解和切面方法來實(shí)現(xiàn),可以適用任何你希望的方法上;二是針對controller的方法可以使用 springmvc 中的@ControllerAdvice 和 RequestBodyAdvice、ResponseBodyAdvice 來對請求前后進(jìn)行處理,本質(zhì)上也是 aop 的思想
自定義方式
自定義注解和切面方法,在方法執(zhí)行開始之前和結(jié)束之后,打印出參、入?yún)⑷罩?/p>
RestControllerAdvice方式
RequestBodyAdvice:會(huì)對被@RquestBody和@PostMapping(@PutMapping等也生效)注解的請求進(jìn)行增強(qiáng)處理,比如所有請求的數(shù)據(jù)都加密之后放在 body 中,在到達(dá) controller 的方法之前,需要先進(jìn)行解密,那么就可以通過 RequestBodyAdvice 來進(jìn)行統(tǒng)一的解密處理,無需在 controller 方法中去做這些通用的操作。
ResponseBodyAdvice:類似RequestBodyAdvice,對 Controller 中@ResponseBody 類型返回值進(jìn)行增強(qiáng)處理,也就是說可以攔截@ResponseBody 類型的返回值,進(jìn)行再次處理,比如加密、日志等操作。
教程
自定義方式
1.引入依賴

2.定義切點(diǎn)

3.編寫切面方法

4.編寫controller

5.演示

RestControllerAdvice方式
1.日志依賴引入,這里我們?nèi)罩究蚣芫秃唵问褂胹lf4j和logback


2.編寫Request請求日志代碼


3.編寫response響應(yīng)日志代碼

4.編寫controller

5.演示
