@restcontroller 是 spring boot 中用于构建 rest api 的注解,等价于 @controller + @responsebody,使类中所有方法默认返回 json/xml 数据而非视图;需配合 @getmapping 等映射注解使用,不支持页面渲染。

@RestController 是 Spring Boot 中构建 REST 接口最直接、最常用的注解,它的核心作用是:让类中所有方法的返回值自动序列化为 JSON(或 XML),并直接写入 HTTP 响应体,无需额外配置或注解。
它本质上是 @Controller + @ResponseBody 的组合
传统 @Controller 用于返回视图(如 HTML 页面),需配合 @ResponseBody 才能返回 JSON;而 @RestController 天然自带 @ResponseBody 效果,整个类的方法默认都走数据响应路径。
这意味着你不用在每个方法上重复加 @ResponseBody,代码更干净,语义更明确——这个类只对外提供 API,不渲染页面。
基本用法:标注类 + 配合请求映射注解
只需两步:
- 在类上添加 @RestController
- 在方法上使用 @GetMapping、@PostMapping 等映射注解,并返回 Java 对象或基础类型
例如:
```java@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User findById(@PathVariable Long id) {
return new User("Alice", 30); // 自动转为 JSON:
// {"name":"Alice","age":30}
}
@PostMapping
public String create(@RequestBody User user) {
return "Created: " + user.getName(); // 字符串也直接返回,不走模板
}
}
支持常见参数绑定方式
你可以自然使用各类 Spring MVC 参数注解,框架会自动解析:
-
@PathVariable:提取 URL 路径中的变量(如
/users/123中的123) -
@RequestParam:获取查询参数(如
?name=Tom&page=1) - @RequestBody:接收 JSON 请求体并绑定为 Java 对象(常用于 POST/PUT)
- @RequestHeader、@CookieValue 等也可按需使用
注意它不处理视图,也不兼容模板引擎
如果你需要返回 HTML 页面(比如 Thymeleaf 或 JSP),就不能用 @RestController,而应改用 @Controller,否则模板不会被解析,客户端只会收到原始字符串或报错。
简单判断标准:
– 返回 User、List<product></product>、Map<string object></string>?→ 用 @RestController
– 返回 "index"、"admin/dashboard" 这类逻辑视图名?→ 必须用 @Controller
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











