Hibernate Validator 自定义校验型注解

目的:通过自定义校验型注释 实现@MyConstraint注解(根据数据库查询校验或其他自定义校验)

一、bean代码

public class User {
	
	private String id;
	
	@MyConstraint(message = "这是一个测试")
	@ApiModelProperty(value = "用户名")
	private String username;
	
	@NotBlank(message = "密码不能为空")
	private String password;
	
	@Past(message = "生日必须是过去的时间")
	private Date birthday;

二、自定义注解

@Target({ElementType.METHOD, ElementType.FIELD})  //注解的目标范围  方法,字段上
@Retention(RetentionPolicy.RUNTIME) //运行时
@Constraint(validatedBy = MyConstraintValidator.class)  //校验时执行的自定义类
public @interface MyConstraint {
	
	String message();

	Class[] groups() default { };      //必须实现这三个方法

	Class[] payload() default { };

}

三、校验时执行时的自定义类

public class MyConstraintValidator implements ConstraintValidator {  
//MyConstraint为自定义注解类  object为输入的参数类型
@Autowiredprivate HelloService helloService;@Overridepublic void initialize(MyConstraint constraintAnnotation) {System.out.println("my validator init"); //初始化方法}@Overridepublic boolean isValid(Object value, ConstraintValidatorContext context) {helloService.greeting("tom"); System.out.println(value); //value为校验时传入的值return true;}}

四、调用的service及其实现类


@Service
public class HelloServiceImpl implements HelloService {

	/* (non-Javadoc)
	 * @see com.imooc.service.HelloService#greeting(java.lang.String)
	 */
	@Override
	public String greeting(String name) {
		System.out.println("greeting");
		return "hello "+name;
	}

}
public interface HelloService {
	
	String greeting(String name);

}



你可能感兴趣的:(Spring,boot)