Spring注解之@validated的使用


 

spring-boot中可以用@validated來校驗數據,如果數據異常則會統一拋出異常,方便異常中心統一處理。
比如,我們判斷一個輸入參數是否合法,可以用如下方式

一 基礎使用

因為spring-boot已經引入了基礎包,所以直接使用就可以了
1 首先在controller上聲明需要對數據進行校驗

@RequestMapping(value="/url.json",method= {RequestMethod.POST})
@ResponseBody
@Transactional
public Result<?> xxmethod( @RequestBody @Validated  XoPO xoPo)     
    throws ParseException, UnsupportedEncodingException {}

2 然后在bean上聲明需要被校驗的字段

復制代碼
@data
public class XoPO{
    
    @validated
    private List<OrderPerson> personList;
    
    @NotNull
    @Size(max=32,message="code is null")
    private String code;

    @NotBlank
    @Size(max=32,message="product is null")
    private String product;
}
復制代碼

而后,當輸入不能滿足條件是,就會拋出異常,而后統一由異常中心處理
也可以用BindingResult,但是用了這個后就必須手動處理異常,侵入了正常的邏輯過程,並不推薦

二 常用注解類型

注意,不要錯用了異常類型,比如在int上不可用@size

常用注解如下

復制代碼
@AssertFalse 校驗false
@AssertTrue 校驗true
@DecimalMax(value=,inclusive=) 小於等於value,
inclusive=true,是小於等於
@DecimalMin(value=,inclusive=) 與上類似
@Max(value=) 小於等於value
@Min(value=) 大於等於value
@NotNull  檢查Null
@Past  檢查日期
@Pattern(regex=,flag=)  正則
@Size(min=, max=)  字符串,集合,map限制大小
@Validate 對po實體類進行校驗
復制代碼

三 嵌套校驗

如果一個類中包含了另外一個實體類,那么在上面加上@Validated即可,比如上面的

 public class XoPO {    
    @validated
    private List<PersonDetailPO> personList;
 }

四 @pathvariable的校驗

spring-boot可能目前並不支持對參數的驗證:https://jira.spring.io/browse...

public Result<?> xoById( @NotNull @NotBlank @Size(min=10,max=32)@PathVariable(value="accountId") String id) {}

但目前還無法拋出異常, 可能在spring的下一個版本中解決,或者不用@Pathvariable,而在service中

Class XoService{
   public xoMethon( @NotNull String id){
   }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM