Spring中@Controller和@RestController的区别

在 Spring 框架中,@Controller 和 @RestController 是用于处理 HTTP 请求的注解,它们之间有一些重要的区别:

1. @Controller

  • @Controller 用于定义一个控制器类,通常用于创建 MVC 应用程序中的控制器。
  • 控制器方法默认返回一个视图(View),通常是一个 HTML 页面或模板视图。
  • 在方法级别上,你需要使用 @ResponseBody 注解来将方法的返回值直接写入 HTTP 响应体,以返回 JSON 数据或其他类型的数据。
  • 可以使用 ModelAndView、Model 或 Map 等对象来传递数据给视图。
@Controller
public class MyController {

    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "helloPage";
    }
}

2. @RestController

  • @RestController 是一个组合注解,结合了 @Controller 和 @ResponseBody 注解的功能。
  • 用于创建 RESTful Web 服务,控制器类中的每个方法都会直接返回数据而不是视图。
  • 结果会被直接写入 HTTP 响应体中,通常以 JSON 格式返回给客户端。
  • 适用于构建基于 REST 风格的 Web 服务,客户端可以通过发送和接收 JSON 或 XML 格式的数据进行交互。
@RestController
public class MyRestController {

    @GetMapping("/api/hello")
    public ResponseEntity<String> hello() {
        return ResponseEntity.ok("Hello, World!");
    }
}

总结

  • 如果您希望控制器方法返回视图并且与前端页面交互,则应使用 @Controller 注解。
  • 如果您想要创建 RESTful API 并直接返回数据(如 JSON 或 XML),则应使用 @RestController 注解。
  • @RestController 更适合构建基于 REST 风格的后端服务,而 @Controller 更适合传统的 MVC 应用程序。

相关推荐

  1. Spring@Controller@RestController区别

    2024-03-17 00:28:01       23 阅读
  2. Spring@Contorller@ResController区别

    2024-03-17 00:28:01       42 阅读
  3. Spring MVC@Controller@RestController区别

    2024-03-17 00:28:01       29 阅读
  4. @Controller @RestController 区别

    2024-03-17 00:28:01       40 阅读
  5. @Controller与@RestController区别

    2024-03-17 00:28:01       19 阅读
  6. C#IEnumerable<stringIList<string区别

    2024-03-17 00:28:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 00:28:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 00:28:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 00:28:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 00:28:01       20 阅读

热门阅读

  1. CMake官方教程11--加入导出设置

    2024-03-17 00:28:01       16 阅读
  2. Vue-插槽

    2024-03-17 00:28:01       20 阅读
  3. ps命令 —– 显示进程状态

    2024-03-17 00:28:01       22 阅读
  4. 由浅到深认识C语言(1):C语言概论

    2024-03-17 00:28:01       21 阅读
  5. app分发步骤有那些?

    2024-03-17 00:28:01       21 阅读
  6. 如何理解闭包

    2024-03-17 00:28:01       22 阅读
  7. 【Unity】旋转的尽头是使用四元数让物体旋转

    2024-03-17 00:28:01       20 阅读