SpringBoot Validate进行参数校验
1、首先添加spr坡纠课柩ingboot web的依赖,在该依赖中包含了hibernate-validator的jar包,我们使吹涡皋陕用这个jar包进行参数校验。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId</dependency>
2、下图为hibernate-validator支持的参数校验注解,我们常用的有@NotNull、@NotBlank等字符串的校验工作。
3、当默认的hibernate-validator的注解不能满足需求的时候,我们可以自定义注解。首先我们定义一个注解MyConstraint,刺胳挤萧@Target表示注解标注在什么上面,@Retention(RetentionPolicy.RUNTIME) 运行时注解,@Constraint(validatedBy = MyConstraintValidator.class)指定校验类,注解中下面三个属性是必须要有的。
4、接下来写一个注解执行的类,创建一个类MyConstraintValidator实现ConstraintValidator接口,这个接口中有两个泛型参数,前一个参数是定义的注解,后一个参数是放在什么字段类型上起作用。
5、Spring AOP中切片相关的概念:1. 切入点(注解),方法上加上注解才能起作用。2. 增强(方法)起作用时执行的业务逻辑。pjp.proceed()是去调用被拦截的方法,如下图所示。如果Controller层抛异常的话,会依次到Aspect、ControllerAdvice、Interceptor、Filter。
6、我们之前介绍过在使用参数校验注解的时候,打印出校验的错误信息。我们可以使用切面去统一实现,而不需要在方法里去实现。然后我们自定义一个参数校验异常类ValidateException,在切面中抛出,写法如下: