Spring註解之@validated的使用(轉載)
阿新 • • 發佈:2020-12-10
https://www.cnblogs.com/liaojie970/p/9036349.html
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){ } }
來解決
【轉載】https://segmentfault.com/a/1190000011712893
標籤:Spring