欧美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)文章

  • SpringBoot 使用WebSocket功能(實(shí)現(xiàn)步驟)

    SpringBoot 使用WebSocket功能(實(shí)現(xiàn)步驟)

    本文通過詳細(xì)步驟介紹了SpringBoot 使用WebSocket功能,首先需要導(dǎo)入WebSocket坐標(biāo),編寫WebSocket配置類,用于注冊WebSocket的Bean,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • spring?IOC容器的Bean管理XML自動裝配過程

    spring?IOC容器的Bean管理XML自動裝配過程

    這篇文章主要為大家介紹了spring?IOC容器Bean管理基于XML的自動裝配過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決(2種方法)

    IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決(2種方法)

    本文主要介紹了IDEA無法創(chuàng)建JDK1.8版本的Springboot項(xiàng)目問題解決,包含兩種解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Springboot之@Async不執(zhí)行原因及分析

    Springboot之@Async不執(zhí)行原因及分析

    這篇文章主要介紹了Springboot之@Async不執(zhí)行原因及分析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 解決response.setHeader設(shè)置下載文件名無效的問題

    解決response.setHeader設(shè)置下載文件名無效的問題

    這篇文章主要介紹了解決response.setHeader設(shè)置下載文件名無效的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況

    解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況

    這篇文章主要介紹了解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • springboot?vue前后端接口測試樹結(jié)點(diǎn)添加功能

    springboot?vue前后端接口測試樹結(jié)點(diǎn)添加功能

    這篇文章主要為大家介紹了springboot?vue前后端接口測試樹結(jié)點(diǎn)添加功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Spring Boot使用yml格式進(jìn)行配置的方法

    Spring Boot使用yml格式進(jìn)行配置的方法

    很多springboot項(xiàng)目使用的是yml格式,主要目的是方便對讀懂其他人的項(xiàng)目,下面小編通過本文給大家分享Spring Boot使用yml格式進(jìn)行配置的方法,需要的朋友參考下吧
    2018-04-04
  • java應(yīng)用cpu占用過高問題分析及解決方法

    java應(yīng)用cpu占用過高問題分析及解決方法

    這篇文章主要介紹了java應(yīng)用cpu占用過高問題分析及解決方法,具有一定參考價(jià)值,需要的朋友可以參考下。
    2017-09-09
  • javaweb實(shí)現(xiàn)文件上傳功能

    javaweb實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論