當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
SpringBoot-服务端参数验证-JSR-303验证框架
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot-服务端参数验证-JSR-303验证框架
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. springboot 默認(rèn)集成了 hibernate-validator,它默認(rèn)是生效的,可以直接使用。
比如:
@RestController @RequestMapping("/hibernate") public class DefaultHibernateValidatorTestController {/*** Springboot 默認(rèn)會(huì)驗(yàn)證 controller 層的 validator,使用的是默認(rèn)實(shí)現(xiàn) hibernate-validator。* 但是 hibernate-validator 只能對(duì)Object類型的屬性進(jìn)行校驗(yàn),不能對(duì)單個(gè)的參數(shù)進(jìn)行校驗(yàn)。下面的校驗(yàn)不生效* @param str* @return*/@RequestMapping("/string")public OpResponse valiateString(@NotEmpty(message = "str不能為空") String str){return OpResponse.suc(str);}/*** 檢驗(yàn)生效* @param foo* @return*/@RequestMapping("/foo")public OpResponse valiateString(@Valid @NotNull Foo foo){return OpResponse.suc(foo);}static class Foo implements Serializable {@NotNullprivate Integer id;@NotEmptyprivate String name;........} }?
2.?hibernate-validator不支持基礎(chǔ)類型的驗(yàn)證,springboot對(duì)其進(jìn)行了擴(kuò)展,添加了MethodValidationPostProcessor攔截器,可以實(shí)現(xiàn)對(duì)方法參數(shù)的校驗(yàn)。
例如:
/*** 對(duì)基礎(chǔ)類型的驗(yàn)證,必須要在Controller類上加 @Validated,同時(shí)配置 MethodValidationPostProcessor 才生效* <pre>* @Bean* public MethodValidationPostProcessor methodValidationPostProcessor() {* return new MethodValidationPostProcessor();* }* </pre>* @link https://yezhwi.github.io/springboot/2017/11/17/SpringBoot-服務(wù)端參數(shù)驗(yàn)證-JSR-303驗(yàn)證框架* Created by wangzhiyuan on 2018/8/20*/ @RestController @RequestMapping("/validate") @Validated public class ValidatorTestController {@ResourceBizService bizService;@RequestMapping("/string") // 這個(gè) @NotEmpty 是生效的public OpResponse valiateString(@NotEmpty(message = "str不能為空") String str){bizService.validateTest(str);return OpResponse.suc(str);}/*** 可以看出,springboot默認(rèn)只會(huì)驗(yàn)證 controller 方法上的 validator 注解,而不會(huì)驗(yàn)證 controller 層以外的。所以,如果要在其他層使用 validator 驗(yàn)證的話,需要單獨(dú)配置攔截器* @return*/@RequestMapping("/blank")public OpResponse blank(){String str = null;bizService.validateTest(str);bizService.validateFooTest(null);return OpResponse.suc(str);}}?
3.?springboot默認(rèn)只會(huì)驗(yàn)證 controller 方法上的 validator 注解,而不會(huì)驗(yàn)證 controller 層以外的。所以,如果要在其他層使用 validator 驗(yàn)證的話,需要單獨(dú)配置攔截器
?
總結(jié)
以上是生活随笔為你收集整理的SpringBoot-服务端参数验证-JSR-303验证框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack-dev-server 和
- 下一篇: 我的.gitignore下配置。存在这里