@Constraint注解,做特殊的入参校验
// @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; }
学海无涯 代码作伴
分类:
springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-08-09 锁概念和死锁,锁类型