這篇文章將為大家詳細(xì)講解有關(guān)SpringBoot如何優(yōu)雅的進(jìn)行參數(shù)校驗(yàn),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)是專業(yè)的新安網(wǎng)站建設(shè)公司,新安接單;提供成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新安網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
參數(shù)的合法性直接影響到程序的安全和性能,因此在進(jìn)行相關(guān)操作前必須檢測對象是否為null,是否為blank,是否被初始化等等。
我們先來看看SpringBoot 是如何來檢驗(yàn)參數(shù)的。
驗(yàn)證總是擺在第一位。
再來分析下Assert 類。 Assert 其實(shí)是一個(gè)非常簡單的工具類。
Assert 類作為一個(gè)工具類,不應(yīng)該被實(shí)例化, 因此該類使用 abstract 進(jìn)行修飾。 沒錯(cuò)這就是經(jīng)常遇到的面試題目, abstract 類不能被實(shí)例化。
除此之外 將構(gòu)造方法使用 private 進(jìn)行修飾也可以防止類被實(shí)例化,這也是常用的編程技巧之一。
Assert 類在SpringBoot 項(xiàng)目中被廣泛使用。
為啥使用Assert 類? 因?yàn)槭褂肁ssert 能使得代碼更加簡潔明。三行代碼變成一行代碼,并且Controller 類不需要依賴具體的Exception 類,少依賴一種Exception, import語句減少一行。
@RequestMapping("edit") @RequiresPermissions(value = "fsdd-2") public String edit(@RequestParam @NonNull Long id, Model model) { Classify classify = classifyService.findById(id); /* if(classify == null){ throw new EntityNotFoundException("被修改的分類不能為空" + id); }*/ Assert.notNullEntity(classify, "被修改的分類不能為空" + id); model.addAttribute("classify", classify); return "manage/ClassifyController/edit"; }
修改某條記錄時(shí) , id 參數(shù)是必須的,并且id不能為空, 并且根據(jù)id查詢出來的實(shí)體對象也不能為空。 當(dāng)然還必須處于登陸狀態(tài),并且擁有相關(guān)的角色權(quán)限。
到此我們只是驗(yàn)證了參數(shù)是否合法并且拋出了異常,但是并沒有告訴用戶后臺發(fā)生了什么事情。
使用 @ControllerAdvice 和 @ExceptionHandler 可以捕獲不同類型的錯(cuò)誤,并且根據(jù)錯(cuò)誤的類型給前臺用戶相應(yīng)的反饋。
關(guān)于SpringBoot如何優(yōu)雅的進(jìn)行參數(shù)校驗(yàn)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。