@RestController和@Controller的区别

打印 上一主题 下一主题

主题 631|帖子 631|积分 1893

@RestController 和 @Controller 是Spring框架中用于定义控制器(Controller)的两个非常重要的注解,它们都用于处置惩罚HTTP请求,但它们之间存在一些关键的区别。
1.@Controller


  • @Controller 注解是Spring MVC的一部分,用于定义一个控制器类。
  • 当Spring MVC接收到一个请求时,它会根据请求的URL映射到相应的控制器类上。
  • @Controller 注解的类中的方法返回的是字符串(通常是视图名)或ModelAndView对象,这些返回值会用于渲染视图(通常是JSP页面)。
  • @Controller 注解通常与@RequestMapping或它的变体(如@GetMapping, @PostMapping等)一起使用来定义请求处置惩罚的方法。
  • 如果你盼望将MVC模式中的“控制器”部分与“视图”部分分离,并且盼望由Spring MVC来管理视图的渲染,那么你应该使用@Controller。
2.@RestController


  • @RestController 是Spring 4引入的一个方便的注解,它实际上是@Controller和@ResponseBody的组合注解。
  • 它意味着,当控制器中的方法返回一个对象时,Spring会自动将这个对象转换为JSON或XML(取决于请求的Accept头部)并写入HTTP相应体中。
  • @RestController更得当构建RESTful Web服务,由于它简化了返回JSON或XML数据的过程。
  • 使用@RestController注解的控制器类中的方法通常会返回一个对象或对象列表,而不是视图名或ModelAndView对象。
  • @RestController也常与@RequestMapping或它的变体一起使用来定义请求处置惩罚的方法。
3.注意


  • 如果你正在构建一个必要渲染视图的Web应用(如基于JSP的Web应用),那么你应该使用@Controller。
  • 如果你正在构建一个RESTful Web服务,盼望直接返回JSON或XML等数据格式,那么@RestController将是更好的选择。
  • @RestController简化了返回数据的过程,由于它自动将返回的对象转换为JSON或XML,而@Controller则必要额外的步骤来渲染视图。
上代码和效果图

@Controller注解

点击查看代码
  1. @Controller
  2. @RequestMapping("/user")
  3. public class UserController {
  4.     @Autowired
  5.     private UserService userService;
  6.     @RequestMapping("/init")
  7.     public String init() {
  8.         return "login";
  9.     }
  10. }
复制代码

@RestController注解

点击查看代码
  1. @RestController
  2. @RequestMapping("/user")
  3. public class UserController {
  4.     @Autowired
  5.     private UserService userService;
  6.     @RequestMapping("/init")
  7.     public String init() {
  8.         return "login";
  9.     }
  10. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表