SpringBoot2.x系列教程(二十)自定义参数校验注解

在SpringBoot的使用过程中,默认使用hibernate-validator作为参数校验的框架,但某些业务场景或校验比较复杂,通过默认提供的注解已经无法满足。此时,除了使用正则表达式来进行校验也可以使用自定义的注解。

比如,对于手机号的简单校验如下:

@Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$", message = "手机号码格式错误")
@NotBlank(message = "手机号码不能为空")
private String phone;

虽然能够完成工作,但是如果多出都出现类似的功能或更复杂的功能,每次都写如此多内容,显得有些臃肿。那么,我们这篇文章就来展示如何通过自定义注解来完成相同的功能。

自定义注解

我们知道hibernate validation实现JSR的标准,同时提供了一些API和扩展性的规范。要实现自定义注解,可以通过实现ConstraintValidator接口来完成。

下面看具体示例,首先定义手机号校验注解@Phone。

/**
 * 手机号校验
 * @author zzs
 */
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {

	/**
	 * 错误提示
	 */
	String message() default "手机号格式错误";
	/**
	 * 分组校验
	 */
	Class[] groups() default {};

	Class[] payload() default {};
}

这里的@Phone注解组合了@Constraint注解,并通过其指定了真正进行校验类。

其中message为定制化的提示信息;groups主要进行将validato

你可能感兴趣的:(Springboot)