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

谈谈 @RestController 和 @Controller

作者头像
子乾建建-Jeff
发布2020-06-29 15:20:06
6060
发布2020-06-29 15:20:06
举报
文章被收录于专栏:iBroPro

点击 ➕ 关注「iBroPro

朱少 · iBP(爱比皮) · 请星标

@RestController 和 @Controller ,两者看上去就有一定的血缘关系,那么他们究竟有哪些爱恨情仇,渊源关系呢?

▍先说下结论:

@RestController = @Controller + @ResponseBody

@Controller 注解的 Controller 类中的函数可以返回具体的页面。比如直接返回的 String 类型的Jsp、Html 页面名字,或者通过 ModelAndView.setViewName() 来指定页面名字。

但如果需要返回 Json 等类型的数据,则需要在函数上面再添加一个注解 @ResponseBody

而通过 @RestController 注解的类,其中的函数不可以返回页面路径只可以返回具体的结果值,比如查询完的对象、对象列表,最终呈现出来就是常用的 Json 等类型的值。

这也是为什么我们通过 @RestController 注解的类,返回得到值后,未加处理,总是得到 Json 类型的值。

因为它已经自动做了处理。如果使用 @RestController 注解的类,再想返回页面路径,得到的值则为 null。

你在项目开发过程中使用哪一个多呢?

下面通过源码看一下 @RestController:

@RestController

代码语言:javascript
复制
package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.stereotype.Controller;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    String value() default "";
}

可以看到,它被加上了 @Controller 和 @ResponseBody 注解。恍然大明白,有没有。

再看下 @Controller 和 @ResponseBody 的源码:

代码语言:javascript
复制
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {
    String value() default "";
}

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ResponseBody {
}

在合适的地方,选用合适的人才,让工作事半功倍。

感谢阅读,感谢陪伴。

参考文章:

https://www.cnblogs.com/shuaifing/p/8119664.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iBroPro 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档