Spring Boot使用Hibernate validator進行引數校驗
阿新 • • 發佈:2021-08-12
轉載:https://blog.csdn.net/qq_34021712/article/details/87545287
一、概念
針對於引數校驗僅在客戶端進行校驗不是安全可靠的,可以進行抓包直接調取介面。引數校驗是基本上每個後端服務都需要進行的操作,但是在每個服務都加上if/else去判空,就顯得程式碼有些冗餘且不美觀、不便於維護,例如下圖所示:
於是就誕生了Hibernate validator,由於SpringBoot的Starters機制,只需要匯入對應的Starters依賴就可以使用相關的API。Hibernate Validator 是Hibernate專案中的一個數據校驗框架,是 JSR 380 參考實現。Hibernate Validator、Bean Validation API 和 TCK 都是使用了Apache Software License 2.0。
二、基本使用
-
匯入Pom依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
-
引數校驗Demo
package com.example.demo.model; import lombok.Data;
-
Controller方法配置
package com.example.demo; import com.example.demo.model.UserModelRequest; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; /** * @Author helin * @Date 2021/5/17 11:21 * @Description NULL */ @RestController @RequestMapping("/demo") public class controller { @PostMapping("/createUser") public String demo(@RequestBody @Valid UserModelRequest userModelRequest, BindingResult result) { if (result.hasErrors()) { for (ObjectError error : result.getAllErrors()) { System.out.println(error.getDefaultMessage()); } } return "Hello World"; } }