spring boot项目自定义参数校验规则示例详解

 更新时间:2023年07月07日 08:18:43   作者:酱油何在  
这篇文章主要介绍了spring boot项目如何自定义参数校验规则,自定义校验规则和自带的规则实现方式一样,先自定义一个注解,然后指定校验类,在校验类里实现具体的校验规则,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下

spring boot项目对参数进行校验时,比如非空校验,可以直接用validation包里面自带的注解。但是对于一些复杂的参数校验,自带的校验规则无法满足要求,此时需要我们自定义参数校验规则。自定义校验规则和自带的规则实现方式一样,先自定义一个注解,然后指定校验类,在校验类里实现具体的校验规则。

下面以校验手机号为例,来实现自定义参数校验规则。

首先定义一个注解,直接照着NotNull注解定义即可。

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
//这里的class就是实现具体校验规则的类
@Constraint(validatedBy = {MobileNoValidator.class})
public @interface MobileNo {
    String message() default "请输入正确的手机号";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

然后定义实现具体校验规则的类,这个类要实现ConstraintValidator接口。

public class MobileNoValidator implements ConstraintValidator<MobileNo, String> {
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if ((value == null)) {
            return false;
        }
        String regex = "^1\\d{10}$";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(value);
        return m.matches();
    }
}

这样,很简单的两个类,就实现了自定义参数校验规则。当参数中加了MobileNo注解,如果输入的手机号不满足1打头的11位数字的规则,就会抛出异常信息。下面写个controller简单测试一下。

先定义一个vo。

public class UserVo {
    @NotNull
    private Long id;
    @NotNull
    @MobileNo
    private String mobileNo;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getMobileNo() {
        return mobileNo;
    }
    public void setMobileNo(String mobileNo) {
        this.mobileNo = mobileNo;
    }
}

再定一个controller。

@RestController
public class UserController {
    @PostMapping(value = "/test")
    public String test(@Validated @RequestBody UserVo userVo) {
        return "success";
    }
}

启动项目,用postman测试一下。

首先输入符合要求的手机号,这时是能正常返回success。

然后输入一个不符合要求的手机号,会返回400错误码,错误信息如下。当然这里返回的错误信息比较不友好,实际项目中可以对参数校验异常统一拦截,返回需要的数据格式。

到此这篇关于spring boot项目如何自定义参数校验规则的文章就介绍到这了,更多相关spring boot自定义参数校验规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMvc静态资源访问实现方法代码实例

    SpringMvc静态资源访问实现方法代码实例

    这篇文章主要介绍了SpringMvc静态资源访问实现方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • springboot 在idea中实现热部署的方法

    springboot 在idea中实现热部署的方法

    这篇文章主要介绍了springboot 在idea中实现热部署的方法,实现了热部署,在每一次作了修改之后,都会自动的重启,非常节约时间,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Java tomcat手动配置servlet详解

    Java tomcat手动配置servlet详解

    这篇文章主要为大家介绍了tomcat手动配置servlet,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 详解Java编程中线程同步以及定时启动线程的方法

    详解Java编程中线程同步以及定时启动线程的方法

    这篇文章主要介绍了详解Java编程中线程同步以及定时启动线程的方法, 讲到了wait()与notify()方法以及阻塞队列等知识,需要的朋友可以参考下
    2016-01-01
  • Java集合TreeSet用法详解

    Java集合TreeSet用法详解

    本文详细讲解了Java集合TreeSet用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 在Mybatis中association标签多层嵌套的问题

    在Mybatis中association标签多层嵌套的问题

    这篇文章主要介绍了在Mybatis中association标签多层嵌套的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • TKmybatis的框架介绍和原理解析

    TKmybatis的框架介绍和原理解析

    tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具
    2020-12-12
  • java单例模式使用详解

    java单例模式使用详解

    这篇文章主要介绍了java单例模式使用方法,通常它的实现方式分为懒汉式实现和饿汉式,下面是详细说明加示例,需要的朋友可以参考下
    2014-04-04
  • 如何发布jar包到maven中央仓库

    如何发布jar包到maven中央仓库

    这篇文章主要介绍了发布jar包到maven中央仓库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • 关于Guava缓存详解及使用说明

    关于Guava缓存详解及使用说明

    这篇文章主要介绍了关于Guava缓存详解及使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10

最新评论