@Controller和@RestController的区别

@Controller和@RestController的区别

关于@RestController 的解释官方文档是这样说的@RestController is astereotype annotation that combines @ResponseBody and @Controller.
就是说@RestController注解相当于@ResponseBody加 @Controller合在一起的作用。那本着追根问底的原则,那么就先探讨下@Controller和@ResponseBody的作用 。
在这里插入图片描述

首先看到@Controller位于org.springframework.stereotype包下,接下来逐条解释每个注解的含义

@Target({ElementType.TYPE}),看源码不解释

在这里插入图片描述

说明该注解是作用在类、接口(包括注解)或者是枚举类上

@Retention(RetentionPolicy.RUNTIME)

在这里插入图片描述

表明该注解由编译器记录在类文件中,虚拟机在运行时保留它们,因此可以反射地读取它们。

@Documented 注释类型申明,没什么卵用

@Component是一个元注解,可以注解其他类注解,如@Controller、 @Service,当然如@Controller @Service;当然也可以注解类,当一个类使用该注解时,这些类就会被实例化,相当于配置文件中的 。

@ResponseBody
在这里插入图片描述

该注解是作用在类上或方法上,作用是什么呢,是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的是在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

通俗点,直接上图

加@ResponseBody
在这里插入图片描述

访问localhost:8080/hellotest

在这里插入图片描述

而看@RestController源码可以看出

在这里插入图片描述

所以你可能之前一直纳闷,为什么@RestController注解类后就不会返回期望的视图,就能说清楚了。

转自:https://www.cnblogs.com/xingchengtec/p/10309289.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值