Springboot整合hibernate validator 全局异常处理

第一步:依赖

<!--数据有效性校验-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

第二步:配置文件

@Configuration
public class HibernateValidatorConfig {
   
    @Bean
    public static Validator validator() {
   
        return Validation.byProvider(HibernateValidator.class)
                .configure()
                // 开启快速校验(不校验所有参数,只要出现校验失败情况直接返回,不再进行后续参数校验),默认校验所有参数,false校验全部
                .failFast(true)
                .buildValidatorFactory()
                .getValidator();
    }
}

第三步:全局异常处理

@RestControllerAdvice
public class GlobalExceptionHandler {
   
    /**
     * Hibernate validator 参数校验异常
     *
     * @param ex
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResultBean<String> validationErrorHandler(MethodArgumentNotValidException ex) {
   
        // 同样是获取BindingResult对象,然后获取其中的错误信息
        // 如果前面开启了fail_fast,事实上这里只会有一个信息
        //如果没有,则可能又多个
        List<String> errorInformation = ex.getBindingResult().getAllErrors()
                .stream()
                .map(ObjectError::getDefaultMessage)
                .collect(Collectors.toList());
        return ResultBeanUtil.error("").setMsg(errorInformation.toString());
    }
}

第四步:

@Getter
@Setter
@ToString
public class AdminLoginDTO {
   
    @NotBlank(message = "账户不能为空")
    @Size(min = 6, max = 32)
    private String account;

    @NotBlank(message = "密码不能为空")
    @Size(min = 6, max = 32)
    private String password;
}

第五步:

@PostMapping("/v1/login")
public ResultBean<SaTokenInfo> login(@RequestBody @Valid AdminLoginDTO adminLoginDTO) {
   

}

相关推荐

  1. Springboot整合hibernate validator 全局异常处理

    2024-01-27 17:22:07       45 阅读
  2. SpringBoot全局异常处理

    2024-01-27 17:22:07       44 阅读
  3. Springboot全局异常处理

    2024-01-27 17:22:07       52 阅读
  4. SpringBoot全局异常处理方法

    2024-01-27 17:22:07       40 阅读
  5. springboot全局处理sql异常

    2024-01-27 17:22:07       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-27 17:22:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-27 17:22:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-27 17:22:07       82 阅读
  4. Python语言-面向对象

    2024-01-27 17:22:07       91 阅读

热门阅读

  1. 开发手札:Github Timeout 22

    2024-01-27 17:22:07       47 阅读
  2. Android启动流程学习笔记

    2024-01-27 17:22:07       48 阅读
  3. 【Go 快速入门】基础语法 | 流程控制 | 字符串

    2024-01-27 17:22:07       54 阅读
  4. LightDB 24.1 UNION支持null类型匹配

    2024-01-27 17:22:07       52 阅读