`
zysnba
  • 浏览: 185720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

boot数据校验,全局异常

 
阅读更多
package com.exception;


import com.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
* @author  zys 2023-08-16
*/
@RestControllerAdvice(annotations = RestController.class)
@Slf4j
public class GlobalExceptionHandler {

@ExceptionHandler(value = Exception.class)
public Result<?> errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e)throws Exception{
if (e instanceof Exception ) {
log.error("Exception 处理异常:\t",e);
return Result.error(e.getMessage());
}
if (e instanceof DuplicateKeyException) {
log.error("SQLIntegrityConstraintViolationException业务处理异常:\t",e);
return Result.error("数据重复");
}
log.error("GlobalExceptionHandler处理异常:\t",e);
return  Result.error("系统异常,请稍后再试");
}

/**
* 处理 form data方式调用接口校验失败抛出的异常
* @param e 异常
* @return Result
*/
@ExceptionHandler(BindException.class)
public Result<?> handleBindException(BindException e) {
List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
String collect = fieldErrors.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining());
return Result.error("参数校验失败,"+ collect);
}


/**
* 处理 json 请求体调用接口校验失败抛出的异常了
* @param e 异常
* @return Result
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public Result<?> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
String collect = fieldErrors.stream()
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining());
return Result.error("参数校验失败,"+ collect);
}

/**
* 处理单个参数校验失败抛出的异常
* @param e 异常参数
* @return Result
*/
@ExceptionHandler(ConstraintViolationException.class)
public Result<?> handleConstraintViolationException(ConstraintViolationException e) {
Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
String collect = constraintViolations.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.joining());
return Result.error("参数校验失败了,"+ collect);
}


}





package com.exception;

/**
* @author  zys 2023-08-16
*/
public class Exception extends RuntimeException{

    public Exception (String message) {
        super(message, null, false, false);
    }

}





demo写起来

    @PostMapping("/test")
    @ApiOperation(value = "测试")
    private Result test(@Validated @RequestBody Test test){
      
        return Result .ok(test);
    }


jar

   <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.17.Final</version>
        </dependency>


分享到:
评论

相关推荐

    Spring Boot 参数校验

    Bean Validation是Java定义的一套基于注解的数据校验规范。这里简单实现了Spring Boot 参数校验,包括自定义注解,分组校验,全局异常处理等

    Springboot前后端分离,JWT+Security+Redis实现登录拦截及权限认证,包含全局异常处理以及统一返回风格

    在本项目中,我们将探讨如何利用Spring Boot、JWT(JSON Web Token)、Spring Security和Redis来实现一个高效的登录拦截和权限认证系统,同时实现全局异常处理和统一的API返回风格。 1. **Spring Boot**:Spring ...

    JSR303数据校验springboot-01-config.zip

    6. **全局异常处理**:为了统一处理校验失败时的异常,可以在Spring Boot中配置全局的异常处理器,捕获`MethodArgumentNotValidException`并返回定制的错误信息。 7. **国际化支持**:JSR303允许你通过资源文件来...

    基于Spring Boot框架的综合应用系统.zip

    基于Spring Boot框架的综合应用系统 项目简介 本项目是一个基于Spring Boot框架的综合应用系统,涵盖了从基础...3. 全局异常处理 处理参数缺失异常、空指针异常和自定义异常。 4. 切面AOP 使用Pointcut定义切点。

    spring boot+自定义 AOP 实现全局校验的实例代码

    在 Spring Boot 框架中实现全局校验是一个非常重要的任务。在 این篇文章中,我们将介绍如何使用自定义的 AOP 来实现全局校验。首先,我们需要定义一个注解,用于标记需要校验的参数。然后,我们将使用 AspectJ ...

    基于Spring Boot框架的分布式应用系统.zip

    全局异常处理使用GlobalExceptionHandler处理Spring MVC框架异常、Spring Security异常、自定义异常等。 方法级别权限校验实现方法级别的入参校验和权限校验。 2. 日志记录 方法入参及耗时日志通过...

    基于Spring Boot框架的秒杀系统Demo.zip

    项目涵盖了用户登录、商品展示、秒杀活动等核心功能,并通过全局异常处理、参数校验、统一响应格式等技术手段确保系统的稳定性和安全性。 项目的主要特性和功能 1. 用户登录与安全 使用两次MD5对用户密码进行...

    基于Spring Boot的聚合搜索平台.zip

    基于Spring Boot的聚合搜索平台 ... 异常处理全局异常处理器,统一处理业务异常。 技术栈 后端Spring Boot, MyBatis Plus, Elasticsearch, Redis 前端React, Ant Design 数据库MySQL 其他Lombok, Swagge

    Spring-Validation 后端数据校验的实现

    如果数据不符合约束条件,Spring Validation 将抛出 MethodArgumentNotValidException 异常,我们可以在全局异常处理类中处理这个异常。 Spring Validation 是一个非常有用的工具,可以帮助我们简化数据校验的代码...

    Java 后端万用项目初始化模板

    全局异常处理器 自定义错误码 封装通用响应类 Swagger + Knife4j 接口文档 自定义权限注解 + 全局校验 全局跨域处理 长整数丢失精度解决 多环境配置 工具类: Easy Excel 表格处理 Hutool 工具库 Apache Commons ...

    U-BOOT启动流程详解

    堆栈通常位于RAM的高地址部分,依次向下分配内存给malloc、全局数据结构bdinfo,以及根据配置可能存在的中断和快速中断栈。 整个启动流程还包括对系统硬件的初始化,如内存控制器、时钟、GPIO、串口等。此外,U-...

    集成spring-boot-starter-validation对接口参数校验.zip

    总的来说,通过集成`spring-boot-starter-validation`,我们可以轻松地在Spring Boot应用中进行接口参数的校验,确保数据的正确性和一致性,提高了系统的稳定性和用户体验。同时,该框架也提供了丰富的扩展性,支持...

    jeecg-boot开源框架1.0-1.1官方源码.rar

    MyBatis Plus是一个MyBatis的增强工具,它在MyBatis的基础上做了很多简化,如:提供 CRUD 操作、支持自定义全局通用操作、提供强大的条件构造器等。在Jeecg-Boot中,MyBatis Plus用于数据库操作,大大减少了手动编写...

    (源码)基于Spring Boot和MyBatis Plus的秒杀商城系统.zip

    # 基于Spring Boot和MyBatis Plus的秒杀商城系统 ## 项目简介 本项目是一个基于Spring Boot和MyBatis Plus框架实现的秒杀商城系统。... 异常处理使用全局异常处理机制,统一处理系统中的异常信息。

    (源码)基于Spring Boot和Redis的高性能秒杀系统.zip

    # 基于Spring Boot和Redis的高性能秒杀系统 ## 项目简介 本项目是一个基于Spring Boot和Redis的高性能秒杀系统,旨在通过优化系统架构和使用... 全局异常处理器+自定义业务异常统一处理系统异常,提升系统的健壮性。

    springboot2.1.3练习源码

    5. **13-spring-boot-validate**:这是关于数据校验的部分,Spring Boot集成了JSR-303/JSR-349标准,可以使用@Valid注解对表单提交的数据进行验证。 6. **09-spring-boot-view-freemarker**:Spring Boot支持多种...

    基于spring boot的后台管理系统源码.rar

    5. **异常处理**:Spring Boot提供了统一的异常处理机制,源码中的全局异常处理器展示了如何优雅地处理运行时异常,提供友好的错误信息。 6. **配置管理**:Spring Boot支持通过application.properties或YAML文件...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...

    Spring Boot项目学习之通用权限管理项目03

    7. **错误处理与日志记录**:Spring Boot提供了全局异常处理和日志记录的机制。通过@ControllerAdvice和@ExceptionHandler,我们可以统一处理可能出现的异常,提供友好的错误信息。同时,使用Log4j或Logback记录系统...

    SpringBoot中异常处理.doc

    SpringBoot在设计上提供了优雅的方式来处理程序运行时可能出现的各种异常,使得开发者...通过自定义异常、全局异常处理器和参数校验,我们可以更好地管理和控制应用的错误处理流程,从而提升用户体验和系统的健壮性。

Global site tag (gtag.js) - Google Analytics