@RestController 是 Spring Boot 中用于构建 RESTful 接口的注解,等价于 @Controller + @ResponseBody,使方法返回值自动序列化为 JSON 写入响应体;需配合 @RequestMapping 等映射注解使用,支持对象、String、Result 封装类等多种返回类型,不可与 @Controller 混用。

@RestController 是 Spring Boot 中构建 RESTful 接口最直接、最常用的注解,它的核心作用就一个:让类里所有方法的返回值自动转成 JSON(或 XML),直接写进 HTTP 响应体,不走视图解析。
它本质是 @Controller + @ResponseBody
你不用再每个方法上加 @ResponseBody,也不用担心返回字符串被当成页面名去渲染。比如:
- @Controller 类中 return "user" → Spring 会去找 user.html 或 user.jsp
- @RestController 类中 return new User(1, "张三") → 自动序列化为 {"id":1,"name":"张三"}
必须搭配请求映射注解使用
单独写 @RestController 不会绑定任何 URL,得配合 @RequestMapping、@GetMapping、@PostMapping 等才能响应请求:
- 类上加 @RequestMapping("/api/users"),统一前缀
- 方法上加 @GetMapping("/{id}"),处理具体路径
- 也可以只在方法上写完整路径,如 @GetMapping("/api/users/{id}")
返回值类型很灵活
它不限定必须返回实体类,支持多种常见类型,Spring 会按规则处理:
- 返回 对象或 List → 自动转 JSON(依赖 Jackson)
- 返回 String → 直接作为响应体文本(不是视图名)
- 返回 Result
封装类(如 Result.success(data))→ 整个 Result 对象被序列化 - 返回 void 或 ResponseEntity → 可精确控制状态码和响应头
注意别和 @Controller 混用
一个类不能同时标 @Controller 和 @RestController,后者已包含前者功能。如果误用了 @Controller 却想返回 JSON,又忘了加 @ResponseBody,结果就是 404(找不到视图)或空白页——这是新手最常踩的坑。


















