周末的时候分享了一个技术session,讲到了@RestController 和 @Controller,当时没有太讲清楚,因为 team 里很多同事之前不是做 Java的,所以对这两个东西不太熟悉,于是写了篇文章整理了一下,顺便分享一下。这是一个比较基础的问题,可以拿来回顾一下 Spring 基础。
@RestController vs @Controller
Controller 返回一个页面
单独使用 @Controller
不加 @ResponseBody
的话一般使用在要返回一个视图的情况,这种情况属于比较传统的Spring MVC 的应用,对应于前后端不分离的情况。
![9972ec3349fe9be8219a3f4a6a41d326.png](https://i-blog.csdnimg.cn/blog_migrate/e4e9fd23db9d62044085bd9102ab8cdb.png)
@RestController 返回JSON 或 XML 形式数据
但@RestController
只返回对象,对象数据直接以 JSON 或 XML 形式写入 HTTP 响应(Response)中,这种情况属于 RESTful Web服务,这也是目前日常开发所接触的最常用的情况(前后端分离)。
![cf7bbd984c08456d29a6fb35653a4549.png](https://i-blog.csdnimg.cn/blog_migrate/4ad76ad66755aec1bf55c4852dbf3132.png)