您好,登錄后才能下訂單哦!
本篇文章為大家展示了springboot如何進行接入參數驗證,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
<dependency> <groupId>com.github.fashionbrot</groupId> <artifactId>mars-validated</artifactId> <version>1.0.2</version> </dependency>
@SpringBootApplication @EnableValidatedConfig(fileName = "test") // fileName 默認中文jar包自帶 如需要批量自定義請自己創建 test.properties 放在自己項目中的resources 下 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@Component @Configuration @EnableValidatedConfig(fileName = "valid_zh_CN") //默認讀取 mars-validated resources 下的 valid_zh_CN,所以不寫默認讀取中文 public class ValidConfig { }
攔截 ValidatedException異常類
@RestControllerAdvice @Slf4j public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.OK) public RespVo exception(Exception e) { log.error("exception error:",e); return RespVo.fail(RespCode.FAIL.getMsg()); } /** * 參數驗證全局處理 * @param e * @return */ @ExceptionHandler(ValidatedException.class) @ResponseStatus(HttpStatus.OK) public RespVo ValidationException(ValidatedException e){ if (log.isDebugEnabled()){ log.debug("filedName:{} errorMsg:{}",e.getFieldName(),e.getMsg()); } return RespVo.fail(e.getMsg(),RespCode.PARAMETER_ERROR.getCode()); } }
@Controller public class TestController { @Autowired private ValidService validService; @RequestMapping("/test") @ResponseBody @Validated //接口開啟驗證 public String test( String abc,@Custom(min = 1,msg="請求參數失敗") String abc1){ return abc+":"+abc1; } //group 驗證參數 @RequestMapping("/test1") @ResponseBody @Validated(groups = {EditGroup.class}) public String test1( @Custom(min = 1,groups = {EditGroup.class,AddGroup.class}) String abc1){ return abc1; } //group 驗證 bean @RequestMapping("/test2") @ResponseBody @Validated(groups = AddGroup.class) public String test2(GroupModel groupModel){ return groupModel.getAbc(); } }
Annotation | Supported data types | 作用 |
---|---|---|
NotBlank | String | 驗證String 字符串是否為空 |
NotNull | String,Object,Integer,Long,Double,Short,Float,BigDecimal, BigInteger | 驗證對象是否為空 |
NotEmpty | String | 驗證字符串不能為空 |
AssertFalse | Boolean,boolean,String | 只能為false |
AssertTrue | Boolean,boolean,String | 只能為true |
BankCard | String | 驗證銀行卡 |
CreditCard | String | 驗證信用卡 |
Default | Integer,Double,Long,Short,Float,BigDecimal,String | 設置默認值 |
Digits | String | 驗證是否是數字 |
String | 驗證是否是郵箱 | |
IdCard | String | 驗證是否是身份證,驗證18歲 |
Length | int,long,short,double,Integer,Long,Float,Double,Short,String | 驗證長度 |
Pattern | String | 正則表達式驗證 |
Phone | String | 驗證手機號是否正確 |
Size | int,long,short,Integer,Long,Short | 驗證大小值 |
NotEqualSize | String | 驗證長度 |
@Documented @Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = {CustomConstraintValidator.class,CustomConstraintValidator2.class})//可對應多個或一個實現類 //CustomConstraintValidator 實現類1 //CustomConstraintValidator2 實現類2 public @interface Custom { //com.sgr.valid.Custom.msg jar包下的 valid_zh_CN.properties 下對應的msg String msg() default "com.sgr.valid.Custom.msg"; int min(); Class<?>[] groups() default {}; }
public class CustomConstraintValidator implements ConstraintValidator<Custom, Object> { @Override public boolean isValid(Custom custom, Object var1) { /** * 自定義方法 */ int min=custom.min(); /** * valud */ System.out.println(var1); var1="567"; /** * return true 則驗證成功 false 驗證失敗 */ return false; } //可實現對參數的修改 @Override public Object modify(Custom annotation, Object var) { System.out.println("CustomConstraintValidator:"+var); return var+"1"; } }
上述內容就是springboot如何進行接入參數驗證,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。