什么时候使用@Controller和@RestController

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

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

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

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

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

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

@RequestMapping("/test")
@ResponseBody
public String login(){
  return "hello";
}

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

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

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

如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值