简介:本文将深入探讨@RestControllerAdvice注解的用法和作用,通过实例和代码展示其应用场景,帮助读者更好地理解和使用这个注解。
在Spring框架中,@Controller和@RestController是两个常用的注解,分别用于处理普通的Web请求和返回JSON数据的Web请求。然而,有时候我们需要对全局的异常或数据进行统一处理,这时候就需要用到@ControllerAdvice和@RestControllerAdvice注解。这两个注解可以增强Controller的功能,定义全局的异常处理、数据预处理和数据绑定方法。
一、基本概念
@ControllerAdvice是一个组合注解,由@Controller、@ResponseBody组成,而@Controller继承了@Component,因此@RestController本质上是个Component,用于定义@ExceptionHandler、@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMapping方法。
二、使用场景
在这个示例中,我们定义了一个GlobalExceptionHandler类,并使用了@RestControllerAdvice注解。在该类中,我们定义了一个handleException方法,用来处理所有的异常。当发生异常时,该方法会被自动调用,并返回一个包含异常信息的ResponseEntity对象。这个对象会被Spring框架自动转换为JSON格式,并返回给客户端。通过这种方式,我们可以实现对全局异常的统一处理。
@RestControllerAdvicepublic class GlobalExceptionHandler {@ExceptionHandler(value = Exception.class)public ResponseEntity<String> handleException(Exception e) {return new ResponseEntity<>("发生异常: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);}}