相同点
- 作用范围:
@ControllerAdvice
和@RestControllerAdvice
注解都用于全局异常处理和统一处理响应,可以应用于整个应用程序的控制器。 - 异常处理:它们都可以捕获和处理应用程序中发生的异常,并提供自定义的异常处理逻辑。
- 统一响应处理:它们都可以在控制器方法返回结果时进行统一的响应处理,例如添加全局的响应头、修改响应状态码等。
不同点
- 注解类型:
@ControllerAdvice
注解的类可以返回视图或模型数据,适用于传统的MVC应用程序。而@RestControllerAdvice
注解的类将默认返回 JSON 格式的响应,适用于基于RESTful风格的API应用程序。 - 响应格式:
@ControllerAdvice
注解的类可以返回视图,可以使用ModelAndView
或String
类型的返回值,可以进行页面跳转。而@RestControllerAdvice
注解的类会将方法返回的对象序列化为 JSON 格式作为响应。
@ControllerAdvice如何实现@RestControllerAdvice相同的功能
在方法或类上添加@Response
注解即可。
综上所述,@ControllerAdvice
和 @RestControllerAdvice
在异常处理和统一响应处理方面的功能类似,只是注解的使用场景和响应格式有所不同。如果你的应用程序是基于MVC架构的传统应用,可以使用 @ControllerAdvice
注解;如果你的应用程序是基于RESTful风格的API应用,可以使用 @RestControllerAdvice
注解。