一、使用hibernate的validator校验参数
二、自定义注解校验
2.1、创建注解类
- @Target:表示这个注解可以注解在什么上
- @Retention:表示这个注解在什么时候启用
- @Constraint:表示这个注解使用哪个类来完成具体的校验
package com.mars.validator;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author Moss
*/
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyConstraintValidator.class)
public @interface MyConstraint {
String message();
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
2.2、创建校验类
下面代码中的ConstraintValidator<MyContraint,Object>;第一个参数表示当前的校验器针对的是MyContraint注解对象,Object表示的是这个注解在什么类型的对象上会有效果。
同时,在这个校验器中引入了一个service接口,表示在这个注解中可以引入别的类;
package com.mars.validator;
import com.mars.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* @author Moss
*/
public class MyConstraintValidator implements ConstraintValidator<MyConstraint, Object> {
@Autowired
private HelloService helloService;
@Override
public void initialize(MyConstraint constraintAnnotation) {
System.out.println("my validator init");
}
@Override
public boolean isValid(Object o, ConstraintValidatorContext constraintValidatorContext) {
System.out.println(o);
helloService.greeting(o.toString());
return false;
}
}