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

升級(jí)SpringBoot版本,引出了一個(gè)大Bug

開(kāi)發(fā) 架構(gòu)
有一天,項(xiàng)目組的同事反饋給我說(shuō),我之前有個(gè)接口在新的測(cè)試環(huán)境報(bào)錯(cuò)了,具體異常是:Missing argment level for method parameter of type Integer。

前言

最近項(xiàng)目組升級(jí)了SpringBoot?版本,由之前的2.0.4?升級(jí)到最新版本2.7.5,卻引出了一個(gè)大Bug。

到底是怎么回事呢?

1、案發(fā)現(xiàn)場(chǎng)

有一天,項(xiàng)目組的同事反饋給我說(shuō),我之前有個(gè)接口在新的測(cè)試環(huán)境報(bào)錯(cuò)了,具體異常是:Missing argment level for method parameter of type Integer。

我當(dāng)時(shí)的第一反應(yīng)有點(diǎn)懵,心想這個(gè)接口是一個(gè)老接口,有一年多的時(shí)間都沒(méi)改過(guò)了,怎么會(huì)出問(wèn)題呢?

他說(shuō)近期另外一個(gè)同事為了部署阿里云服務(wù)器?,把新測(cè)試環(huán)境SpringBoot?的版本升級(jí)到了最新版。

之后,在測(cè)試的過(guò)程中,發(fā)現(xiàn)我有個(gè)Get請(qǐng)求接口報(bào)異常了。

該接口代碼類(lèi)似于這樣:?在getCategory接口中,有兩個(gè)參數(shù):

  1. type表示大類(lèi),是必傳的。
  2. level表示要返回幾級(jí)分類(lèi),比如:4級(jí)分類(lèi),就傳4,是非必傳的,默認(rèn)就是查4級(jí)分類(lèi)。

就是這樣一個(gè)接口的level參數(shù),前端沒(méi)有傳參,例如:

結(jié)果被Spring MVC攔截直接報(bào)錯(cuò)了。

2、報(bào)錯(cuò)的原因

從打印的異常信息看,現(xiàn)在level參數(shù)必須要傳值了,之前是可傳,可不傳的。

我后來(lái)本打算自定義Spring的轉(zhuǎn)換器,修改一下校驗(yàn)規(guī)則,跟老版本保持一致。

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

但后來(lái)發(fā)現(xiàn),被spring-web-5.3.23的源碼無(wú)情的打臉了。

在org.springframework.web.method.annotation?包下的AbstractNamedValueMethodArgumentResolver?類(lèi)的resolveArgument?方法中:多了這樣的校驗(yàn)。如果該參數(shù)為空,沒(méi)有設(shè)置默認(rèn)值,required屬性為true,并且不是Optional類(lèi)型,則執(zhí)行handleMissingValueAfterConversion?方法。該方法會(huì)調(diào)用handleMissingValue方法,具體代碼如圖中所示:最后會(huì)拋出之前我看到的那個(gè)異常。

原因最新版本的Spring中不允許Get接口的請(qǐng)求參數(shù),在不使用@RequestParam注解時(shí),值為空的情況出現(xiàn)了。

3、如何解決問(wèn)題?

想要解決上面的報(bào)錯(cuò)問(wèn)題,其實(shí)很簡(jiǎn)單,只需在level參數(shù)前加??@RequestParam???注解,并且設(shè)置??required???屬性為??false??。

例如:

圖片

但是后面發(fā)現(xiàn),項(xiàng)目中不只我這一個(gè)接口要調(diào)整,其他好多同事的接口,也有類(lèi)似的問(wèn)題,需要修改的接口很多。

這個(gè)改動(dòng)的工作量不小。

哭暈在測(cè)試。。。

后話

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

我之前l(fā)evel參數(shù)不加@RequestParam?注解,也沒(méi)設(shè)置required?屬性,當(dāng)時(shí)持有的心態(tài)是Spring有默認(rèn)值,有些注解不加,程序也能正常運(yùn)行,既然這樣就可以少寫(xiě)點(diǎn)代碼,并且在當(dāng)時(shí)的版本測(cè)試過(guò),沒(méi)有出現(xiàn)過(guò)什么問(wèn)題。

這種情況其實(shí)是Spring框架的一個(gè)bug,已經(jīng)在最新版本中被修復(fù)了。。。

趕緊review一下你們的代碼,看看有沒(méi)有類(lèi)似的用法,不然遲早有一天也會(huì)中招。

責(zé)任編輯:姜華 來(lái)源: 蘇三說(shuō)技術(shù)
相關(guān)推薦

2020-06-09 08:06:31

RocketMQ消息耗時(shí)

2015-07-27 10:34:55

大數(shù)據(jù)大忽悠

2022-02-28 00:14:30

人工智能數(shù)據(jù)機(jī)器學(xué)習(xí)

2021-09-01 08:58:15

項(xiàng)目 UTFailed

2024-08-12 15:55:51

2024-08-14 08:35:38

sql數(shù)據(jù)庫(kù)OOM 異常

2010-08-06 14:05:56

WPF

2010-04-15 15:23:41

2025-02-11 09:17:57

2011-10-18 13:43:31

福布斯信息技術(shù)企業(yè)計(jì)算

2022-02-24 11:46:38

區(qū)塊鏈技術(shù)NFT

2012-05-30 09:40:55

Linux鍋爐

2021-05-07 07:59:52

WebFluxSpring5系統(tǒng)

2022-04-06 09:47:55

AI谷歌人工智能

2014-02-12 14:45:40

Linux文本文件

2021-10-08 07:50:57

軟件設(shè)計(jì)程序

2024-02-04 16:14:38

線程開(kāi)發(fā)

2018-06-20 15:50:38

JDK9JVMJDK10

2020-09-29 07:44:20

跨域前后端分離插件

2017-02-19 15:09:47

深度學(xué)習(xí)機(jī)器閱讀
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费成人av | 欧州一区二区三区 | 91天堂| 欧美日韩精选 | 日韩在线一区二区三区 | 亚洲欧美精品国产一级在线 | 精品视频在线播放 | 国产精品一区一区 | 免费亚洲一区二区 | 欧美激情国产日韩精品一区18 | 精品在线观看一区二区 | 国产精品国产三级国产播12软件 | 国产精品视频专区 | 91看片在线观看 | 国产成人福利 | 在线观看av网站 | 色婷婷一区二区三区四区 | 中文字幕在线一区二区三区 | 2018国产精品 | 中国美女撒尿txxxxx视频 | 精品久久久一区二区 | 国产综合精品一区二区三区 | 日韩三级 | 操久久 | 麻豆精品国产91久久久久久 | 噜啊噜在线 | 久久蜜桃精品 | 欧美日韩一区二区三区在线观看 | 久久一二三区 | 国产成人精品一区二区三区网站观看 | 精品欧美久久 | 91久久精品一区 | 日本不卡一区二区三区 | 国产剧情一区 | 麻豆一区| 欧美在线一区视频 | 久久亚洲二区 | 中文字幕在线播放不卡 | 欧美a级成人淫片免费看 | 夜夜骚| 国产免费看|