聊聊Spring Controller 注解

Spring的注解中有@Controller 和@RestController,这两者有区别呢?

Spring MVC Controller

传统的MVC controller 依赖于View 来生成response。

SPRING-MVC.png
  1. 客户端向web service 发送request。
  2. Request 被DispatcherServlet 截获,并通过Handler Mappings 找到能够处理该请求的controller。
  3. Controller 处理该Request,将response 返回给DispatcherServlet,并由它发送给view。

RESTful Web Service

RESTful web service 不需要依赖view,而是以JSON/XML 的方式直接将数据写入HTTP response。在这种情况下,可以对controller 中的每一个方法加上@ResponseBody 注解。Spring 会轮询所有注册的HttpMessageConverter 找到第一个可以转换的content-type 类型。

3.x-diagram.png

从Spring 4.0 开始,增加了@RestController 注解,该注解相当于同时使用了@Controller 和@ResponseBody。使用了@RestController 就不需要为每个方法添加@ResponseBody了。

4.x-diagram.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容