参数校验放在controller还是service_@Validated校验的实践

  • Post author:
  • Post category:其他


spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。


一、简单使用


1、Control


ler上开启验证

fada87610929bfabf6c901be0ba532b9.png


2、DTO上申明被验证的字段

a、声明需要被校验的字段

5625c97106949daadcc9ce6933ac73c9.png


3、附上部分标签含义

1b4245fe2ecc8bbf54a63f2a009e6f86.png


二、@Validated分组


1、Controller上开启验证

15ba6d24365ed8d53d66083711ba4483.png


2、DTO上申明被验证的字段

a、创建分组接口类

558174574ccfe470704f05c6298bad95.png

b、声明需要被校验的字段

f8075335082c13ba67187db9f033b9da.png


三、集合校验

如果我们直接使用java.util.Collection下的list或者set来接收数据,参数校验并不会生效!我们可以使用自定义list集合来接收参数:


1、包装List类型,并声明@Valid注解

177b6227849ebdfddae78d93ca609e1b.png


2、Controller上开启验证

e10beda3bae2febe8b729b9f5a9480fa.png


四、嵌套校验

DTO类里面的字段都是基本数据类型和String类型。但是实际场景中,有可能某个字段也是一个对象,这种情况先,可以使用嵌套校验。


1、DTO上申明被验证的字段

e0b3432a964a14b93e8494227d3fd058.png

【注意】此时DTO类的对应字段必须标记@Valid注解。