@RestControllerAdvice es solo un azúcar sintáctico para @ControllerAdvice + @ResponseBody , puede mirar aquí .
¿Deberíamos usar siempre @RestControllerAdvice para servicios de descanso y @ControllerAdvice MVC?
Nuevamente, como se mencionó anteriormente, @ControllerAdvice se puede usar incluso para servicios web REST, pero también debe usar @ResponseBody .
Además, podemos entenderlo simplemente como:
@RestControler = @Controller + @ResponseBody
@RestControllerAdvice = @ControllerAdvice + @ResponseBody .
Teniendo en cuenta que @RestControllerAdvice es una anotación más conveniente para manejar Exception con RestfulApi.
Ejemplo de uso del sistema operativo:
@RestControllerAdvice public class WebRestControllerAdvice { @ExceptionHandler(CustomNotFoundException.class) public ResponseMsg handleNotFoundException(CustomNotFoundException ex) { ResponseMsg responseMsg = new ResponseMsg(ex.getMessage()); return responseMsg; } }En ese caso, cualquier instancia de excepción de CustomNotFoundException se lanzará en el cuerpo de la respuesta.
Ejemplo extraído aquí: https://grokonez.com/spring-framework/spring-mvc/use-restcontrolleradvice-new-features-spring-framework-4-3
Excepción: una buena API REST debe manejar la excepción correctamente y enviar la respuesta adecuada al usuario. El usuario no debe representarse con ninguna excepción no controlada. Un desarrollador de API REST tendrá dos requisitos relacionados con el manejo de errores.
@RestControllerAdvice es la combinación de @ControllerAdvice y @ResponseBody
La anotación @ControllerAdvice se introdujo por primera vez en Spring 3.2.
Podemos usar la anotación @ControllerAdvice para manejar excepciones en los servicios RESTful, pero debemos agregar @ResponseBody por separado .
Nota:
GlobalExceptionHandler se anotó con @ControllerAdvice , por lo que interceptará las excepciones de los controladores en toda la aplicación.