欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring的RequestBodyAdvice攔截淺析

 更新時(shí)間:2023年02月02日 11:14:32   作者:朝夕不待人  
本文主要介紹了Spring的RequestBodyAdvice攔截淺析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

背景

因?yàn)轫?xiàng)目接口需要進(jìn)行解密,需要對數(shù)據(jù)進(jìn)行統(tǒng)一處理,就使用了ReuqestBodyAdvice進(jìn)行數(shù)據(jù)解密處理,但是偶然的發(fā)現(xiàn)supports方法會出現(xiàn)執(zhí)行兩次的情況,覺得有點(diǎn)奇異就進(jìn)行了一次斷點(diǎn)調(diào)試,然后就發(fā)現(xiàn)了執(zhí)行兩次的原因;

過程

1.默認(rèn)supports方法返回false,表示不做任何處理:

2.默認(rèn)supports方法返回true,表示對數(shù)據(jù)進(jìn)行處理:

如圖所示無論supports方法返回true還是false,只要這個(gè)ReuqestAdvice存在并且在spring中生效,supports方法都會執(zhí)行兩次;

了解了前置情況接下來就是用斷點(diǎn)進(jìn)行接口調(diào)試了:
第一次跳過supports方法后的跳轉(zhuǎn):

第二次執(zhí)行完supports方法之后的跳轉(zhuǎn):

如圖所示,如果有經(jīng)常對看源碼或者眼尖的朋友應(yīng)該就會方法兩次執(zhí)行完supports方法之后跳轉(zhuǎn)的方法名是有區(qū)別的:
第一次執(zhí)行后跳轉(zhuǎn): beforeBodyRead
第二次執(zhí)行后跳轉(zhuǎn): afterBodyRead

結(jié)論

如上述的調(diào)測結(jié)果所示,實(shí)現(xiàn)RequestBodyAdvice接口之后的攔截在成功執(zhí)行的時(shí)候會調(diào)用兩次supports方法.
而執(zhí)行兩次的原因是因?yàn)樾枰謩e對beforeBodyRead和afterBodyRead進(jìn)行判斷:
當(dāng)?shù)谝淮蝧upports方法返回結(jié)果是true的時(shí)候表示會執(zhí)行beforeBodyRead方法
當(dāng)?shù)诙蝧upports方法返回true的時(shí)候表示會執(zhí)行afterBodyRead方法.
反之亦然
PS: 一個(gè)比較容易被人忽視但是找不到解決方法的小細(xì)節(jié):
若是Controller類上的方法參數(shù)沒有加上@RequestBody標(biāo)簽則該RequestBodyAdvice是不會被執(zhí)行的.
如果上述內(nèi)容存在問題,麻煩各位留言指出會第一時(shí)間修改.

到此這篇關(guān)于Spring的RequestBodyAdvice攔截淺析的文章就介紹到這了,更多相關(guān)Spring RequestBodyAdvice攔截內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論