Spring的注解中有@Controller 和@RestController,这两者有区别呢?
Spring MVC Controller
传统的MVC controller 依赖于View 来生成response。
- 客户端向web service 发送request。
- Request 被DispatcherServlet 截获,并通过Handler Mappings 找到能够处理该请求的controller。
- Controller 处理该Request,将response 返回给DispatcherServlet,并由它发送给view。
RESTful Web Service
RESTful web service 不需要依赖view,而是以JSON/XML 的方式直接将数据写入HTTP response。在这种情况下,可以对controller 中的每一个方法加上@ResponseBody 注解。Spring 会轮询所有注册的HttpMessageConverter 找到第一个可以转换的content-type 类型。
从Spring 4.0 开始,增加了@RestController 注解,该注解相当于同时使用了@Controller 和@ResponseBody。使用了@RestController 就不需要为每个方法添加@ResponseBody了。