SpringBoot全局错误处理的两种方式:注解法和覆盖路径法文章目录SpringBoot全局错误处理的两种方式:注解法和覆盖路径法引言SpringBoot全局错误处理第一种方法:注解法注解使用SpringBoot全局错误处理第二种方法:覆盖路径法实现逻辑
SpringBoot全局错误处理第一种方法:注解法注解
springboot提供两个注解来完成全局的错误处理
@ControllerAdvice
见名知意,控制器增强,就是用来增强controller的方法;主要用来定义@ExceptionHandler, @lnitBinder和@ModelAttribute方法( 本文只进ExceptionHandler,其他之后会写)作用在类上,适用于所有使用@RequestMapping方法相当于是一个针对controller层的AOP主要属性: basePackages,用来确定作用范围:@ControllerAdvice(basePackages =com.zhao.omservice.controller”
@ExceptionHandler
见名知意,异常处理:用来定义异常处理的方法:作用在方法上,和@ControllerAdvice配合使用(可以自己单独使用,作用在controler层的类方法上),用来配置controler层的异常处理,只针对抛出的异常主要属性只有一个: value,值为一个包含异常class的数组:@ExceptionHandlerlvalue =NoSuchMethodError.class,NoClassDefFoundError.classH,属性标识用来外理那种异常的方法个类里面可以有多个被@ExceptionHandler注释的方法被注释的方法,如果没有定义注解的value值,可以在方法参数中额外定义一个类型为任意异常的参数
SpringBoot全局错误处理第二种方法:覆盖路径法
此方法范围比较广,可以处理404错误
实现逻辑:
在Spring Boot中,Controller中抛出的异常默认交给了 /error(可以通过属性server.error.path覆盖)来处理,应用程序可以将/error映射到一个特定的Controller中处理来代替Spring Boot的默认实现,可以使用继承 AbstractErrorController 来统一处理系统的各种异常。
实现方法
继承 AbstractErrorController
实现默认方法 public String getErrorPath()
实现构造方法,并加上@Controller注解
在类的内部写一个具体的错误处理方法,并将该方法映射路径为("/error");如果修改过就使用修改过的错误处理路径。
示例代码如下:构造方法以及实现默认方法参考BasicErrorController,该类是Spring Boot默认的处理,可以参考该类来实现自己的