IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring自定义注解(validation) -> 正文阅读

[Java知识库]Spring自定义注解(validation)

  • pom
  • 自定义注解
  • 测试

?还有一种自定义注解是通过AOP和注解实现的,本文暂不介绍。

一、pom

        <!-- 用于注解校验 -->
        <!--jsr 303-->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <!-- hibernate validator-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.0.Final</version>
        </dependency>

二、自定义注解

2.1、注解

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Constraint(validatedBy = BankNoValidator.class)
public @interface BankNo {
    String message() default "银行账号错误";

    /**
     * 将validator进行分类,不同的类group中会执行不同的validator操作
     *
     * @return validator的分类类型
     */
    Class<?>[] groups() default {};

    /**
     * 主要是针对bean,很少使用
     *
     * @return 负载
     */
    Class<? extends Payload>[] payload() default {};
}

2.2、配置校验类

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

public class BankNoValidator implements ConstraintValidator<BankNo, String> {


    @Override
    public void initialize(BankNo constraintAnnotation) {
        ConstraintValidator.super.initialize(constraintAnnotation);
    }

    @Override
    public boolean isValid(String bankNo, ConstraintValidatorContext constraintValidatorContext) {
        return null !=bankNo && !"".equals(bankNo);
    }
}

三、测试

3.1、全局异常处理器

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


/**
  * @ClassName: GlobalExceptionHandler
  * @Description: 全局异常处理器
  */
@RestControllerAdvice
public class GlobalExceptionHandler {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public CommonResponseDTO handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
        logger.error("{}", e.getBindingResult().getFieldError().getDefaultMessage());
        return CommonResponseDTO.builder().code("1002")
                .message(e.getBindingResult().getFieldError().getDefaultMessage()).build();
    }
}


3.2、请求类

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("fund_user")
@ApiModel(value="User对象", description="用户表")
public class FundUser implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "银行账号")
    @BankNo
    private String bankNo;
}
@Data
@Builder
public class CommonResponseDTO<T> {
    private String code;
    private String message;
    private T data;
}

3.3、测试类

@RestController
public class TestApi {

    @PostMapping("/testPost")
    public void testPost(@Valid @RequestBody FundUser user){
        System.out.println(user.toString());
    }
}

3.4、postman测试

测试成功!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 22:18:55  更:2022-03-15 22:20:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:04:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码