开发经验总结

一、validation的使用

引入依赖

java 复制代码
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

采用注解校验

实体类的字段采用相关注解修饰,如@NotNull,@Null

java 复制代码
@NotBlank
private String name;

在controller使用@Valid修饰该实体类

分组校验

(1)定义一个标识接口

java 复制代码
public interface Add {}

(2)在校验注解指定分组

java 复制代码
@Null(groups = Add.class)

(3)使用Validated修饰实体类

java 复制代码
@Validated(Add.class)

注意:当使用分组校验时,修饰字段的注解都要加分组,否则其他字段校验不生效,它只会在Validated修饰

自定义校验注解

(1)编写一个自定义注解

java 复制代码
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
        validatedBy = {ShowConstraintValidator.class}//可以指定多个校验器
)
public @interface Show {
    //默认消息提示,需要在resources目录下新增ValidationMessages.properties配置
    String message() default "{com.mall.common.valid.Show.message}";

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

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

    int[] vals() default {};

}

(2)在自定义一个校验器

java 复制代码
public class ShowConstraintValidator implements ConstraintValidator<Show,Integer> {
    @Override
    public void initialize(Show constraintAnnotation) {
       //初始化参数
    }

    @Override
    public boolean isValid(Integer integer, ConstraintValidatorContext constraintValidatorContext) {
        //todo 校验逻辑判断
        return true;
    }
}

(3)在resources目录增加一个配置文件ValidationMessages.properties

java 复制代码
com.mall.common.valid.Show.message=test
相关推荐
阿湯哥10 小时前
AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南
java·人工智能·spring
CheungChunChiu10 小时前
Linux 内核动态打印机制详解
android·linux·服务器·前端·ubuntu
小楼v10 小时前
说说常见的限流算法及如何使用Redisson实现多机限流
java·后端·redisson·限流算法
与遨游于天地10 小时前
NIO的三个组件解决三个问题
java·后端·nio
czlczl2002092511 小时前
Guava Cache 原理与实战
java·后端·spring
yangminlei11 小时前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot
西***634711 小时前
打破部署桎梏!编码器两大核心架构(NVR/PoE)深度解析
服务器·音视频·视频编解码
GIS之路11 小时前
GDAL 创建矢量图层的两种方式
前端
小目标一个亿12 小时前
Windows平台Nginx配置web账号密码验证
linux·前端·nginx
记得开心一点嘛12 小时前
Redis封装类
java·redis