@RestController的作用
@RestController在Spring Boot中的作用解析
@RestController是Spring Boot中一个非常重要的注解,它结合了@Controller和@ResponseBody两个注解的功能,专门用于构建RESTful Web服务。
核心作用
标记为控制器:表明该类是一个Spring MVC控制器,能够处理HTTP请求
自动响应体转换:所有方法返回值都会自动通过HTTP消息转换器转换为JSON/XML等格式,直接写入HTTP响应体
与@Controller的区别
特性 @RestController @Controller
响应处理 自动@ResponseBody 需要显式@ResponseBody
用途 REST API专用 传统MVC控制器
视图解析 不适用 可返回视图名称
典型用法
java
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
// 自动转换为JSON
return userService.findById(id);
}
@PostMapping
public ResponseEntity<User> createUser(@RequestBody User user) {
User savedUser = userService.save(user);
return ResponseEntity.created(URI.create("/users/" + savedUser.getId()))
.body(savedUser);
}
}
底层机制
当使用@RestController时,Spring会注册适当的HttpMessageConverter实现
根据请求的Accept头或响应Content-Type,自动选择转换器(如Jackson用于JSON)
省去了手动处理响应序列化的步骤
适用场景
构建前后端分离应用的API接口
微服务间的HTTP通信接口
任何需要返回结构化数据(JSON/XML)而非HTML视图的场景
@RestController极大地简化了RESTful服务的开发,是Spring Boot中构建Web API的首选方式。