前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么时候使用@Controller和@RestController

什么时候使用@Controller和@RestController

作者头像
余生大大
发布2022-11-02 14:27:26
3930
发布2022-11-02 14:27:26
举报
文章被收录于专栏:余生大大

在开发中我们都定义过@Controller这个注解,他的含义是:

@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用

而@RestController注解就是@ResponseBody + @Controller合在一起的作用。

我们再来了解一下@ResponseBody的作用:

@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据

需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

代码语言:javascript
复制
@RequestMapping("/test")
@ResponseBody
public String login(){
  return "hello";
}

那么在前台接收到的数据为:hello,如果我们不加@ResponseBody那么就会报错

当没用@ResponseBody修饰的时候,Spring以为会返回一个View(也就是MVC中的那C)但是返回的东西却是数据,找不到对应的视图会报错。

在前后端分离普及的现在后端返回基本不再需要返回视图只需要返回数据而我们在每个方法上都加@ResponseBody的注解显然不是很必要,于是我们这个@RestController注解就可以只在类中定义一次就规定全类方法的返回都是json或xml

如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档