Springboot配置validator参数校验

  1. pom.xml
  2. GlobalExceptionHandler.java
  3. Result.java

validator在线文档:https://docs.jboss.org/hibernate/validator/6.1/reference/en-US/html_single/#validator-gettingstarted

1 pom.xml

 <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>6.1.6.Final</version>
        </dependency>
        <!-- hibernate validator-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.0.Final</version>
        </dependency>

2 GlobalExceptionHandler.java

import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.ValidationException;
import java.util.ArrayList;
import java.util.Set;

@ControllerAdvice
@Component
public class GlobalExceptionHandler {
     

    @ExceptionHandler
    @ResponseBody
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Result handle(ValidationException exception) {
     
        ArrayList msgs=new ArrayList<>();
        if(exception instanceof ConstraintViolationException){
     
            ConstraintViolationException exs = (ConstraintViolationException) exception;
            Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
            for (ConstraintViolation<?> item : violations) {
     
                /**打印验证不通过的信息*/
                System.out.println(item.getMessage());
                msgs.add(item.getMessage());
            }
        }
        return Result.fail(msgs.toString());
    }
}

Result.java

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel(description = "响应数据格式")
public class Result {
     

    @ApiModelProperty(value = "状态码")
    private int code;

    @ApiModelProperty(value = "信息")
    private String msg;

    @ApiModelProperty(value = "数据")
    private Object data;

    private Result(int code, String msg, Object data) {
     
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public static Result of() {
     
        return new Result(0, null, null);
    }

    public static Result fail(String msg) {
     
        return new Result(1, msg, null);
    }

    public int getCode() {
     
        return code;
    }

    public Result setCode(int code) {
     
        this.code = code;
        return this;
    }

    public String getMsg() {
     
        return msg;
    }

    public Result setMsg(String msg) {
     
        this.msg = msg;
        return this;
    }

    public Object getData() {
     
        return data;
    }

    public Result setData(Object data) {
     
        this.data = data;
        return this;
    }

}

使用方法:
在controller中添加非空校验 @NotBlank(message = “code不能为空”))

	@GetMapping("/getInfo")
    public Result getInfo(@NotBlank(message = "code不能为空")) @RequestParam String code ) {
     
        return Result.of().setData(enterprise.getInfo(code));
    }

你可能感兴趣的:(springboot,笔记,java)