您的位置:首页 > 财经 > 金融 > 无极网站维护_全球农村电商平台有哪些_seo是干什么的_网站编辑怎么做

无极网站维护_全球农村电商平台有哪些_seo是干什么的_网站编辑怎么做

2025/1/18 14:46:44 来源:https://blog.csdn.net/weixin_62286800/article/details/144745095  浏览:    关键词:无极网站维护_全球农村电商平台有哪些_seo是干什么的_网站编辑怎么做
无极网站维护_全球农村电商平台有哪些_seo是干什么的_网站编辑怎么做

@RestControllerAdvice@ControllerAdvice 都是 Spring 框架中的注解,用于定义全局的异常处理、数据绑定、模型属性共享等功能。它们的区别主要体现在返回值的处理和适用的场景。

1. @ControllerAdvice

  • 功能

    • @ControllerAdvice 是 Spring MVC 提供的全局异常处理机制,它可以在整个应用程序中全局处理控制器抛出的异常,并且能够统一处理返回的数据和错误响应。
    • @ControllerAdvice 可以用于设置全局的模型属性、数据绑定、拦截控制器方法的参数等。
  • 适用场景

    • 适用于传统的 MVC 模式(即页面渲染),通常会处理模型数据并返回视图(例如 ModelAndView)。
  • 返回类型

    • @ControllerAdvice 处理的异常会返回 ModelAndView,即返回的是一个 视图
    • 适用于返回页面的控制器。
  • 示例代码

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;@ControllerAdvice
public class GlobalExceptionHandler {// 全局处理异常@ExceptionHandler(Exception.class)public String handleException(Exception ex, Model model) {model.addAttribute("error", ex.getMessage());return "error";  // 返回一个视图名称}
}

在这个例子中,当出现异常时,Spring 会返回一个视图名 "error",并将错误信息通过 Model 对象传递给视图。

2. @RestControllerAdvice

  • 功能

    • @RestControllerAdvice@ControllerAdvice 的一个变种,它是专门为 RESTful API 提供的功能,适用于返回 JSON 或其他格式的数据。
    • @RestControllerAdvice 主要用于全局处理异常,并返回 JSON 格式的错误信息或数据。
  • 适用场景

    • 适用于 REST API 的开发,处理的是 JSON 响应,而不是视图。
  • 返回类型

    • @RestControllerAdvice 默认返回的是 JSON 格式的数据。与 @ControllerAdvice 不同,它不返回视图,而是返回 ResponseEntity 或 Java 对象,自动转化为 JSON 格式。
  • 示例代码

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;@RestControllerAdvice
public class GlobalExceptionHandler {// 全局处理异常@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception ex) {return ResponseEntity.status(500).body("Error: " + ex.getMessage()); // 返回 JSON 格式的响应}
}

在这个例子中,当出现异常时,Spring 会返回一个包含错误信息的 JSON 响应。

3. 主要区别

特点@ControllerAdvice@RestControllerAdvice
返回类型默认返回 视图名称(例如 ModelAndView 或视图模板)默认返回 JSON 格式的数据(或其他格式,如 XML)
适用场景用于传统的 MVC 应用程序,处理页面和视图用于 RESTful API 应用程序,返回数据(JSON 格式)
注解组合可以与 @ResponseBody 配合使用,返回 JSON 或 XML 格式的数据默认具备 @ResponseBody 功能,无需显式标注
常见用途处理页面渲染中的异常和全局数据绑定,模型属性共享处理 REST API 中的异常并返回统一的错误响应
功能区别主要用于 @ModelAttribute@ExceptionHandler 等处理主要用于 @ExceptionHandler,返回 REST API 错误响应数据

4. 实际应用

  • 如果你是开发一个 传统的 Web 应用(即使用视图模板如 JSP 或 Thymeleaf),你会使用 @ControllerAdvice
  • 如果你开发的是 RESTful API(通常是返回 JSON 数据),则使用 @RestControllerAdvice,这样它会自动将错误信息以 JSON 格式返回给客户端,而不需要额外的配置。

5. 如何选择使用哪一个?

  • 如果你的应用程序是一个传统的 Web 应用,你应该选择 @ControllerAdvice 来处理异常、全局数据绑定等。
  • 如果你的应用程序是一个 RESTful API,你应该选择 @RestControllerAdvice 来处理异常,并返回 JSON 格式的数据响应。

总结来说,@RestControllerAdvice 相当于 @ControllerAdvice + @ResponseBody,它默认会返回响应体的数据(通常是 JSON 格式),而 @ControllerAdvice 适合用于传统的 Web 应用,返回视图或模型数据。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com