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; }
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