答案 0 :(得分:12)
@RestControllerAdvice
只是@ControllerAdvice
+ @ResponseBody
的语法糖,您可以查看here。
我们是否应该始终使用@RestControllerAdvice来进行休息服务 @ControllerAdvice MVC?
同样,如上所述,@ControllerAdvice
也可用于REST Web服务,但您还需要使用@ResponseBody
。
答案 1 :(得分:1)
此外,我们可以将其理解为:
@RestControler
= @Controller
+ @ResponseBody
@RestControllerAdvice
= @ControllerAdvice
+ @ResponseBody
。
请记住,@ControllerAdvice
是使用RestfulApi处理Exception时更方便的注释。
操作系统用法示例:
@RestControllerAdvice
public class WebRestControllerAdvice {
@ExceptionHandler(CustomNotFoundException.class)
public ResponseMsg handleNotFoundException(CustomNotFoundException ex) {
ResponseMsg responseMsg = new ResponseMsg(ex.getMessage());
return responseMsg;
}
}
在这种情况下,任何CustomInFoundFoundException异常都将抛出到响应正文中。
答案 2 :(得分:1)
异常:好的REST API应该正确处理异常并将正确的响应发送给用户。不应为用户呈现任何未处理的异常。 REST API开发人员将有两个与错误处理有关的要求。
@RestControllerAdvice是@ControllerAdvice和@ResponseBody的组合
@ControllerAdvice注释是在Spring 3.2中首次引入的。
我们可以使用 @ControllerAdvice批注在RESTful服务中处理异常,但是我们需要单独添加@ResponseBody 。
注意:
GlobalExceptionHandler带有@ControllerAdvice批注,因此它将拦截整个应用程序中控制器的异常。