@Controller和@RestController的区别
@Controller和@RestController的区别
- Controller
- 定义
- RestController
- 定义
- 两者共同点
- 两者区别
Controller
定义
Controller是SpringBoot的基本组件,也是MVC结构的组成部分,其作用是将用户提交来的请求通过URL匹配,分发给不同的接收器(具体的Controller),该接收器会对其进行相应处理,然后返回处理结果。
RestController
定义
@Controller和@ResponseBody的一个组合,当我们使用@RestController注解定义一个类的时候,这个类中方法传递给前端的数据会自动转换为json类型。
需要注意的是:@RestController只是标识类传递给前端的数据类型为json,而类中的方法如果想接受前端的数据还是需要在对应的方法参数中添加@RequestBody注解。
两者共同点
都是用来表示Spring某个类是否可以接收HTTP请求。
两者区别
@Controller:标识一个Spring类是Spring MVC controller处理器。@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模板页面。在方法上加@ResponseBody注解,也可以返回实体对象。
@RestController:@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模板页面。
@RestController中的方法如果想跳转页面,则用ModelAndView进行封装。
参考资料:
- Springboot中的Controller
- Controller和RestController的区别