聊聊Spring Controller 注解

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

Spring MVC Controller

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

聊聊Spring Controller 注解_第1张图片
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 类型。

聊聊Spring Controller 注解_第2张图片
3.x-diagram.png

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

聊聊Spring Controller 注解_第3张图片
4.x-diagram.png

你可能感兴趣的:(聊聊Spring Controller 注解)