前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot2.x系列教程(二十)自定义参数校验注解

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

作者头像
程序新视界
发布2020-02-13 10:33:01
9380
发布2020-02-13 10:33:01
举报
文章被收录于专栏:丑胖侠丑胖侠

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

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

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

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

自定义注解

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

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

代码语言:javascript
复制
/**
 * 手机号校验
 * @author zzs
 */
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {

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

	Class<? extends Payload>[] payload() default {};
}

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义注解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档