成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

升級SpringBoot版本,引出了一個大Bug

開發 架構
有一天,項目組的同事反饋給我說,我之前有個接口在新的測試環境報錯了,具體異常是:Missing argment level for method parameter of type Integer。

前言

最近項目組升級了SpringBoot?版本,由之前的2.0.4?升級到最新版本2.7.5,卻引出了一個大Bug。

到底是怎么回事呢?

1、案發現場

有一天,項目組的同事反饋給我說,我之前有個接口在新的測試環境報錯了,具體異常是:Missing argment level for method parameter of type Integer。

我當時的第一反應有點懵,心想這個接口是一個老接口,有一年多的時間都沒改過了,怎么會出問題呢?

他說近期另外一個同事為了部署阿里云服務器?,把新測試環境SpringBoot?的版本升級到了最新版。

之后,在測試的過程中,發現我有個Get請求接口報異常了。

該接口代碼類似于這樣:?在getCategory接口中,有兩個參數:

  1. type表示大類,是必傳的。
  2. level表示要返回幾級分類,比如:4級分類,就傳4,是非必傳的,默認就是查4級分類。

就是這樣一個接口的level參數,前端沒有傳參,例如:

結果被Spring MVC攔截直接報錯了。

2、報錯的原因

從打印的異常信息看,現在level參數必須要傳值了,之前是可傳,可不傳的。

我后來本打算自定義Spring的轉換器,修改一下校驗規則,跟老版本保持一致。

這樣那些基本接口就不用改了。

但后來發現,被spring-web-5.3.23的源碼無情的打臉了。

在org.springframework.web.method.annotation?包下的AbstractNamedValueMethodArgumentResolver?類的resolveArgument?方法中:多了這樣的校驗。如果該參數為空,沒有設置默認值,required屬性為true,并且不是Optional類型,則執行handleMissingValueAfterConversion?方法。該方法會調用handleMissingValue方法,具體代碼如圖中所示:最后會拋出之前我看到的那個異常。

原因最新版本的Spring中不允許Get接口的請求參數,在不使用@RequestParam注解時,值為空的情況出現了。

3、如何解決問題?

想要解決上面的報錯問題,其實很簡單,只需在level參數前加??@RequestParam???注解,并且設置??required???屬性為??false??。

例如:

圖片

但是后面發現,項目中不只我這一個接口要調整,其他好多同事的接口,也有類似的問題,需要修改的接口很多。

這個改動的工作量不小。

哭暈在測試。。。

后話

這個問題有很多人中招,所以非常有必要把這個問題分享給大家,防微杜漸。

我之前level參數不加@RequestParam?注解,也沒設置required?屬性,當時持有的心態是Spring有默認值,有些注解不加,程序也能正常運行,既然這樣就可以少寫點代碼,并且在當時的版本測試過,沒有出現過什么問題。

這種情況其實是Spring框架的一個bug,已經在最新版本中被修復了。。。

趕緊review一下你們的代碼,看看有沒有類似的用法,不然遲早有一天也會中招。

責任編輯:姜華 來源: 蘇三說技術
相關推薦

2020-06-09 08:06:31

RocketMQ消息耗時

2022-02-28 00:14:30

人工智能數據機器學習

2015-07-27 10:34:55

大數據大忽悠

2021-09-01 08:58:15

項目 UTFailed

2024-08-12 15:55:51

2010-08-06 14:05:56

WPF

2024-08-14 08:35:38

sql數據庫OOM 異常

2010-04-15 15:23:41

2025-02-11 09:17:57

2022-02-24 11:46:38

區塊鏈技術NFT

2011-10-18 13:43:31

福布斯信息技術企業計算

2021-05-07 07:59:52

WebFluxSpring5系統

2012-05-30 09:40:55

Linux鍋爐

2022-04-06 09:47:55

AI谷歌人工智能

2021-10-08 07:50:57

軟件設計程序

2014-02-12 14:45:40

Linux文本文件

2024-02-04 16:14:38

線程開發

2018-06-20 15:50:38

JDK9JVMJDK10

2020-09-29 07:44:20

跨域前后端分離插件

2024-05-06 09:08:52

微軟開源Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产福利网站 | 精精国产xxxx视频在线播放 | 欧美午夜精品 | 精品欧美黑人一区二区三区 | 鲁一鲁资源影视 | 久久人体 | 污视频在线免费观看 | 国产女人与拘做受视频 | 国产精品久久国产精品久久 | 久久久久久久国产 | 国产精品精品 | 久久躁日日躁aaaaxxxx | 欧美一区二区三区在线视频 | 午夜精品一区 | 久久精品国产一区二区电影 | 日韩国产精品一区二区三区 | 国产伦精品一区二区三区四区视频 | 天堂在线91 | 在线观看av网站 | 亚洲欧美激情精品一区二区 | 精品一区二区三区在线视频 | 国产一区中文字幕 | 欧美日韩精品中文字幕 | 久久国产一区二区三区 | 五月综合色啪 | chinese中国真实乱对白 | 精品九九在线 | 久久久综合色 | 动漫www.被爆羞羞av44 | 免费在线观看一区二区三区 | 亚洲一区视频 | 国产亚洲精品精品国产亚洲综合 | 日本一区二区三区免费观看 | 欧美极品在线 | 精品国产乱码久久久久久久久 | 亚洲高清一区二区三区 | 五月天国产在线 | 在线成人www免费观看视频 | 成年人黄色一级片 | 亚洲区在线 | 99精品久久久国产一区二区三 |