首页 > 其他分享 >@Constraint注解,做特殊的入参校验

@Constraint注解,做特殊的入参校验

时间:2023-08-09 10:46:37浏览次数:56  
标签:String Constraint 校验 value import 注解

// @Constraint 是 Java 中的注解之一,用于标记自定义的约束注解。约束注解通常用于数据验证,用来限制字段的取值或格式,确保数据的合法性。
@Constraint(validatedBy = FlagValidate.class)

 第一步:先建一个@interface Flag的注解校验类,注解相关的校验类为FlagValidate.Class:

import javax.validation.Constraint;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = FlagValidate.class)
// @Constraint 是 Java 中的注解之一,用于标记自定义的约束注解。约束注解通常用于数据验证,用来限制字段的取值或格式,确保数据的合法性。
// 新加 @Flag 校验参数注解
public @interface Flag {

    // 给一个返回的默认值,或者可以自己定义如: @DoneTime(param = "startValue")
    String message() default "Invalid flag value";

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

 第二步: 具体的校验类,校验方法:

import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 自己写的校验类,需要实现javax.validation包下的类: ConstraintValidator
 */
public class FlagValidate implements ConstraintValidator<Flag, String> {

    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        System.out.println("校验入参的Flag 必须是Y或N: " + value);
        if (value == null || value.length() == 0) {
            return true;
        }
        return "Y".equals(value) || "N".equals(value);
    }
}

第三步: 使用,在需要检验的字段上加上刚才新建的注解:

@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BulkTierChangeSaveReqVO {

    String buId;
    String programId;
    String newTierId;
    @NotEmpty
    Set<String> visibleCards;
    @Flag
    String flag;
}

 

标签:String,Constraint,校验,value,import,注解
From: https://www.cnblogs.com/lgg20/p/17616199.html

相关文章

  • Spring-2-透彻理解Spring 注解方式创建Bean--IOC
    今日目标学习使用XML配置第三方Bean掌握纯注解开发定义Bean对象掌握纯注解开发IOC模式1.第三方资源配置管理说明:以管理DataSource连接池对象为例讲解第三方资源配置管理1.1XML管理Druid连接池(第三方Bean)对象【重点】数据库准备--创建数据库createdatabaseifno......
  • Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发
    今日目标掌握纯注解开发依赖注入(DI)模式学习使用纯注解进行第三方Bean注入1注解开发依赖注入(DI)【重点】问题导入思考:如何使用注解方式将Bean对象注入到类中1.1使用@Autowired注解开启自动装配模式(按类型)@ServicepublicclassStudentServiceImplimplementsStuden......
  • 常用注解之@PathVariable与@RequestParam详解
    @PathVariable和@RequestParam首先说一下Request了解一下请求参数是什么在访问各种各样网站时,经常会发现网站的URL的最后一部分形如:?xxxx=yyyy&zzzz=wwww。这就是HTTP协议中的Request参数,它有什么用呢?先来看一个例子:在知乎中搜索web浏览器跳转到新页面后,URL变为https://www.zhih......
  • 处理器核心 错误源: 已更正的计算机检查 错误类型: 内部奇偶校验错误
    问题描述:最近工作用的PC,会偶发的自动重启问题原因:起初以为是CPU过热(毕竟是过40度的城市),然而经过一系列的检查并未发现风扇异常。想着这台PC也跟了我快3年了,估计积灰可能比较严重,于是清理了一下,结果仍然没有解决最终,在事件查看器->系统中看到在自动重启前系统记录了一条错误日志“......
  • typeScript学习-类型注解、类型推导
    typeScript学习类型注解声明时定义变量固定类型letdata:number=3data=4interfaceStudent{ name:string, age:number} letstuObj ={name:25,age:'zhangsan'} 类型推导声明时候没有定义变量类型,在赋值时定义的变量类型letdata=3......
  • @Transactional(rollbackFor = Exception.class) 详解 推荐的事务注解方式 @Transact
    @Transactional(rollbackFor=Exception.class)详解原文链接:https://blog.csdn.net/weixin_43987718/article/details/12342262117、@Transactional(rollbackFor=Exception.class)详解1、参考来源:https://www.cnblogs.com/clwydjgs/p/9317849.html1)、异常是分为运行......
  • spring中的@Resource注解运用
    @Resource注解是JDK扩展包的@Autowired注解是Spring框架自己的 @Resource注解默认根据名称装配byName,未指定name时,使用属性名作为name。通过name找不到的话会自动启动通过类型byType装配。@Autowired注解默认根据类型装配byType,如果想根据名称装配,需要配合@Qualifier注解一起......
  • @Cacheable 、 @CachePut 、@CacheEvict 注解
    在Application类上添加注解@EnableCaching@EnableCachingpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}@Cacheable注解能够让方法的返回值被缓存起来,后续的请求可以直......
  • 6、注解Annotation
    一、注解的本质:1、注解,Annotation是JDK5.0引入的新技术。2、注解的格式:@注释名,还可以添加参数(必要时)3、注解不是程序本身,但可以对程序作出解释(就这一点,注释和注解的作用类似)4、注解可以被其他程序读取(比如编译器等等)5、注解可以给Java包、类型(类、接口、枚举)、构造器、方法......
  • 前后端滑块校验
    前端1.创建一个滑块组件slider点击查看代码<template><divclass="slider"><divclass="mask"><divclass="container"><divclass="title"><divclass="te......