日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

方法参数名称和Spring

發(fā)布時(shí)間:2023/12/3 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 方法参数名称和Spring 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

繼續(xù)之前的博客文章有關(guān)構(gòu)造函數(shù)和方法參數(shù)以及Java在運(yùn)行時(shí)不保留參數(shù)名稱的情況–先前的文章涉及構(gòu)造函數(shù)不保留參數(shù)名稱及其對(duì)Spring中的Contructor注入的含義,在此我將介紹更多內(nèi)容不保留參數(shù)名稱的情況對(duì)Spring有影響:

1.考慮帶參數(shù)的Spring MVC Controller方法綁定到傳入的請(qǐng)求參數(shù):

@RequestMapping(value='/members/find')public String getMembersByName(@RequestParam String name){...return 'list';}

在這里,參數(shù)“名稱”具有與之關(guān)聯(lián)的@RequestParam批注,這表明Spring MVC會(huì)將請(qǐng)求參數(shù)“名稱”綁定到該方法參數(shù)。

由于參數(shù)名稱在運(yùn)行時(shí)未保留,因此Spring可能會(huì)引發(fā)異常:

Request processing failed; nested exception is java.lang.IllegalArgumentException: Name for argument type not available, and parameter name i nformation not found in class file either.

此處的修復(fù)很簡單,可以使用調(diào)試選項(xiàng)進(jìn)行編譯,這些調(diào)試選項(xiàng)將在運(yùn)行時(shí)保留參數(shù)名稱,或者更好的方法是簡單地指示期望的請(qǐng)求參數(shù)名稱是什么,作為@RequestParam批注的參數(shù):

@RequestMapping(value='/members/find') public String getMembersByName(@RequestParam('name') String name){return 'list'; }

2.同樣,考慮另一種Spring MVC控制器方法,這次支持URI模板模式:

@RequestMapping(value='/members/{id}', method=RequestMethod.GET) public @ResponseBody Member get(@PathVariable Integer id){return this.memberDB.get(id); }

這里的期望是,如果一個(gè)請(qǐng)求的uri為/ members / 20,則id參數(shù)將被綁定為20值,但是由于在運(yùn)行時(shí)不保留參數(shù)名'id',因此類似在前一種情況下,要么在調(diào)試時(shí)編譯,要么在@PathVariable批注中明確提及期望的模式名稱:

@RequestMapping(value='/members/{id}', method=RequestMethod.GET) public @ResponseBody Member get(@PathVariable('id') Integer id){

3.第三個(gè)示例是Spring中具有@Cacheable批注的緩存支持。 考慮一個(gè)用@Cacheable注釋的示例方法:

@Cacheable(value='default', key='#param1.concat('-').concat(#param2)') public String cachedMethod(String param1, String param2){return '' + new Random().nextInt(); }

這里的鍵是一個(gè)Spring-EL表達(dá)式,它指示鍵生成器通過將名稱param1的第一個(gè)參數(shù)的自變量與名稱為param2的第二個(gè)參數(shù)的自相結(jié)合來生成密鑰。 但是,像以前一樣的問題是這些名稱在運(yùn)行時(shí)不可用。

與以前一樣,修復(fù)程序之一是在調(diào)試符號(hào)打開的情況下進(jìn)行編譯。 第二種解決方法是使用占位符代替參數(shù)索引– a0 OR p0代表第一個(gè)參數(shù),a1 OR p1代表第二個(gè)參數(shù),依此類推,這樣@Cacheable鍵將如下所示:

@Cacheable(value='default', key='#p0.concat('-').concat(#p1)') public String cachedMethod(String param1, String param2){return '' + new Random().nextInt(); }

因此,總而言之,使用依賴于方法參數(shù)名稱的Spring功能的一種安全方法是使用debug on(javac的-g或-g:var選項(xiàng))或通過顯式傳遞表示參數(shù)名稱的元信息來進(jìn)行編譯。運(yùn)行。

參考: all和其他博客中來自我們JCG合作伙伴 Biju Kunjummen的方法參數(shù)名稱和Spring 。

翻譯自: https://www.javacodegeeks.com/2012/11/method-parameter-names-and-spring.html

總結(jié)

以上是生活随笔為你收集整理的方法参数名称和Spring的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。