@Controller 与 @RestController 的区别¶
一、@Controller¶
传统 MVC:
@Controller
public class MyController {
@GetMapping("/page")
public String page() {
return "index"; // 返回视图名
}
}
返回值会被 ViewResolver 解析成页面。
二、@RestController¶
= @Controller + @ResponseBody:
@RestController
public class ApiController {
@GetMapping("/api")
public User api() {
return new User(); // 直接序列化成 JSON
}
}
三、区别¶
| @Controller | @RestController | |
|---|---|---|
| 返回视图 | ✅ | ❌ |
| 返回 JSON | 需加 @ResponseBody | 默认 |
| 用于 | 前后端不分离 | 前后端分离 |
四、@RestController 本质¶
就是组合注解。
面试要点
前后端分离用 @RestController,SSR/模板引擎用 @Controller。