@RestController: @ResponseBody和@Controller的作用。
时间: 2024-08-16 20:09:04 浏览: 53
`@RestController` 和 `@Controller` 是Spring MVC框架中的两个注解,它们用于定义控制器类,但功能略有不同。
1. **@RestController**: 这个注解主要用于创建RESTful风格的Web服务控制器。它结合了`@Controller`的功能,并自动将返回的对象转换为JSON响应,无需额外配置`@ResponseBody`。当你直接返回一个Java对象时,Spring MVC会自动调用`ObjectMapper`(如Jackson)来序列化对象为JSON。举个例子:
```java
@RestController
public class MyController {
@GetMapping("/api/data")
public User getUser() {
User user = new User();
// ... 设置用户属性
return user;
}
}
```
2. **@Controller**: 原生的`@Controller`注解,用于传统的MVC架构,不指定HTTP请求方法的响应体应该如何处理。如果要返回JSON,通常需要配合`@ResponseBody`一起使用:
```java
@Controller
public class MyController {
@GetMapping("/api/data")
@ResponseBody
public User getUser() {
User user = new User();
// ... 设置用户属性
return user;
}
}
```
在`@RestController`下,Spring MVC自动地进行了这种转换,而在`@Controller`下,你需要显式地通过`@ResponseBody`标记来指示结果应该以JSON形式返回。
阅读全文