跳至內容

@validated註解原理詳解

更新時間
连续6年不跑路的安全速度最适合国人VPN
连续6年不跑路的安全速度最适合国人VPN
註解原理:@validated註解利用編譯器查找校驗器,在參數校驗時創建校驗上下文,執行校驗並處理結果,包括拋出異常和返回錯誤信息。步驟:獲取校驗器。創建校驗上下文。執行校驗。處理校驗結果(拋出異常或返回錯誤信息)。

@validated註解原理

@validated註解是SpringBoot中用於參數校驗的註解,通過在控制器方法的參數上使用該註解,可以對入參進行校驗,如果校驗不通過,則會拋出MethodArgumentNotValidException異常,並返回錯誤信息。

工作原理

@validated註解通過以下方式工作:

  1. 獲取校驗器:

    • 註解處理器會在編譯時在類路徑中查找實現了Validator接口的類,這些類稱爲校驗器。
  2. 創建校驗上下文:

    • 當控制器方法被調用時,@validated註解會創建一個MethodValidationContext對象,其中包含有關請求參數的信息。
  3. 執行校驗:

    • 校驗器被用於驗證MethodValidationContext中的參數,並返回一個BindingResult對象,其中包含有關校驗結果的信息。
  4. 處理校驗結果:

    • 如果校驗不通過,@validated註解會拋出MethodArgumentNotValidException異常,並返回包含校驗錯誤信息的BindingResult對象。

使用示例

import javax.validation.constraints.NotNull;@RestControllerpublic class ExampleController {    @PostMapping("/user")    public User createUser(@Validated @RequestBody User user) {        // ...    }}class User {    @NotNull    private String name;    // ...}
登錄後複製

在這個示例中,@validated註解用於對createUser方法的user參數進行校驗,如果name字段爲空,則會拋出異常。

優點

使用@validated註解進行參數校驗具有以下優點:

  • 代碼簡潔:無需編寫額外的代碼進行參數校驗,簡化了代碼。
  • 魯棒性:校驗器處理了校驗邏輯,減少了代碼中的錯誤。
  • 可擴展性:可以輕鬆創建自定義校驗器來滿足特定需求。

以上就是@validated註解原理詳解的詳細內容,更多請關注本站其它相關文章!

更新時間

發表留言

請注意,留言須先通過審核才能發佈。