Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

@Controller和@RestController的区别

星橙技术 2019-01-23 15:35:00 阅读数:151 评论数:0 点赞数:0 收藏数:0

 

 

        关于@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;当然也可以注解类,当一个类使用该注解时,这些类就会被实例化,相当于配置文件中的 <bean id="" class=""/>。

 

@ResponseBody

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

通俗点,直接上图

加@ResponseBody

访问localhost:8080/hellotest

 

而看@RestController源码可以看出

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

版权声明
本文为[星橙技术]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/xingchengtec/p/10309289.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;

支付宝红包,每日可领