spring boot validated的使用

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

一 基礎使用

由於spring-boot已經引入了基礎包,因此直接使用就能夠了
1 首先在controller上聲明須要對數據進行校驗json

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

2 而後在bean上聲明須要被校驗的字段app

@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,可是用了這個後就必須手動處理異常,侵入了正常的邏輯過程,並不推薦spring-boot

二 經常使用註解類型

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

經常使用註解以下code

@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便可,好比上面的ci

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中get

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

來解決io

相關文章
相關標籤/搜索