@RestController于@Controller区别详解
时间: 2023-08-15 14:11:51 浏览: 104
在Spring框架中,`@RestController`和`@Controller`是两种常见的注解,用于定义控制器类。
`@Controller`注解用于标识一个类为控制器组件,它通常被用于传统的MVC模式下,负责处理用户请求并返回相应的视图。在使用`@Controller`时,我们需要在方法中使用`@RequestMapping`或其他类似的注解来指定请求路径和请求方法,并在方法中返回逻辑视图名或ModelAndView对象等。
而`@RestController`注解是Spring4.0以上版本引入的新注解,它结合了`@Controller`和`@ResponseBody`的功能。`@ResponseBody`注解用于将返回值直接作为HTTP响应体返回给客户端,而不是通过视图解析器解析为视图。因此,使用`@RestController`注解的类可以直接返回数据对象(如JSON、XML等),而不需要额外的转换。
总结起来,`@Controller`适用于传统的MVC模式下,主要负责返回视图;而`@RestController`适用于构建RESTful风格的Web服务,主要负责返回数据对象。
示例代码如下:
```java
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello() {
return "hello"; // 返回逻辑视图名
}
}
```
```java
@RestController
public class MyRestController {
@RequestMapping("/api/hello")
public String hello() {
return "Hello, world!"; // 直接返回字符串
}
}
```
希望能对你有所帮助!如果还有其他问题,请随时提问。
阅读全文