1. 程式人生 > 實用技巧 >Spring註解之@validated的使用(轉載)

Spring註解之@validated的使用(轉載)

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