restcontroller和controller区别
@RestController和@Controller注解
RestController的作用相当于Controller加ResponseBody共同作用的结果,但采用RestController请求方式一般会采用Restful风格的形式。
Controller的作用:声明该类是Controller层的Bean,将该类声明进入Spring容器中进行管理
ResponseBody的作用:表明该类的所有方法的返回值都直接进行提交而不经过视图解析器,且返回值的数据自动封装为json的数据格式
RestController的作用:包含上面两个的作用,且支持Restful风格的数据提交方式
@RestController
源码如下。
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented@Controller @ResponseBodypublic @interface RestController { /** * The value may indicate a suggestion for a logical component name, * to be turned into a Spring bean in case of an autodetected component. * @return the suggested component name, if any * @since 4.0.1 */ String value() default ""; }
@RestController的编写方式依赖注解组合,@RestController被@Controller和@ResponseBody标注,表示@RestController具有两者的注解语义,因此在注解处理时@RestController比@Controller多具有一个@ResponseBody语义,这就是@RestController和@Controller的区别,也是@RestController的返回值为何都是经过转换的json的原因。
@ResponseBody注解的处理过程
既然知道@RestController与@Controller的区别是多了一个@ResponseBody语义,我们不妨了解一下@ResponseBody的处理过程。
首先,可以知道,@ResponseBody是一个针对方法返回值进行处理的注解。如果熟悉Spring MVC处理过程的话,可以知道在根据requesturl映射获取到HandlerMethod之后,根据HandlerMethod调度请求方法的对象是HandlerAdapter,方法调用结束,返回值处理的调度对象也是HandlerAdapter。所以,@ResponseBody注解的处理应该也是在HandlerAdapter中完成。
Restful风格:
get:获取数据时用的请求方式
post:更新数据时的请求方式
put:增加数据时的请求方式
delete:删除数据时的请求方式
本文作者:JayZzz
本文链接:https://www.cnblogs.com/JayZzzWh/p/16601790.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人