(SpringBoot)使用自己定义的注解去验证参数。

本文详细介绍如何在SpringBoot中使用内置验证框架进行参数校验,包括依赖导入、注解使用及自定义注解实现。通过实例展示了@NotNull、@Length等注解的运用,并深入解析自定义IsMobile注解及其验证逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数校验采用的是SpringBoot提供的一套验证框架。

1 需要导入的依赖

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

2 对于这个框架的一些介绍

如果需要采用这个框架来进行参数的校验,只需要在要校验的参数前面加上@Valid
而对里面具体参数的限制,则采用注解的形式。

public class LoginVo {
    @NotNull
    @IsMobile
    private long mobile;

    @Length(min=32)
    @NotNull
    private String password;
}

@NotNull,@Length 这些都是框架提供的,意思也很明确。当然我们也可以自己定义对参数进行内容或者参数的限制。

3 自定义注解对参数进行限制

关于对注解的解释与使用:https://www.cnblogs.com/HDK2016/p/6914521.html

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
        validatedBy = {IsMobileValidator.class}
)
public @interface IsMobile {
    boolean required() default true;
    String message() default "{请输入正确的手机格式}";
    Class<?>[] groups() default {};

}

这个与Java中的注解不同的地方在于添加了一个@Constraint()这个标签是指要对注解进行验证的类。

public class IsMobileValidator implements ConstraintValidator<IsMobile,String>{
    private boolean required = false;

    @Override
    public void initialize(IsMobile isMobile) {
        required = isMobile.required();
    }

    @Override
    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
        if(required){
            return ValidatorUtil.isMobile(s);
        }else{
            if(StringUtils.isEmpty(s)){
                return  true;
            }else{
                return  ValidatorUtil.isMobile(s);
            }
        }
    }
}

ConstraintValidator<> 这个接口包含两个方法:
1 initialize() 在验证之前的初始化
2 boolean isValid() 这里面进行的具体的验证的逻辑。

这样便自己定义注解并且使用注解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值