问题:spring里面 @Controller和@RestController注解的区别

spring里面 @Controller和@RestController注解的区别

Web MVC和REST applications都可以用@Controller吗?
如果是的话,怎么样区别这个一个 Web MVC还是REST application呢

回答一

下面的代码向你展示了@controller和 @RestController的区别


@Controller
public class RestClassName{@RequestMapping(value={"/uri"})@ResponseBodypublic ObjectResponse functionRestName(){//...return instance}
}
@RestController
public class RestClassName{@RequestMapping(value={"/uri"})public ObjectResponse functionRestName(){//...return instance}
}

@ResponseBody 在缺省的情况下会被激活. 你不需要在方法声明那里加上。

回答二

  • @Controller 用于标记类是 Spring MVC Controller
  • @RestController是一种加上了@Controller和@ResponseBody的便捷注解(请看Javadoc)
    所以下面定义的两个controller应该是一样的
@Controller
@ResponseBody
public class MyController { }@RestController
public class MyRestController { }

回答三

事实上,小心点,它们不是完全相同的

如果你的应用程序定义了任何interceptors,它们就不能作用在 注解了@RestController的Controllers 上,但是他们对于标注了@Controller的controller还是起作用的。

拦截器的配置:

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new TemplateMappingInterceptor()).addPathPatterns("/**", "/admin-functions**").excludePathPatterns("/login**");}}

声明一个 Spring controller:

@Controller
public class AdminServiceController {...
Will work, however@RestController
public class AdminServiceController {...

最终就没有拦截器和它关联了

回答四

正如你在Spring文档(Spring RestController documentation)中看到的,RestController注解与Controller注解相同,但是@ResponseBody默认是生效的,因此所有Java对象在响应体中都被序列化为JSON格式。

回答五

Spring4以上版本中的新注解@RestController将类标记为一个controller,其中每个方法返回一个对象而不是一个视图。它是@Controller和@ResponseBody结合在一起的的缩写。

文章翻译自Stack Overflow:https://stackoverflow.com/questions/25242321/difference-between-spring-controller-and-restcontroller-annotation

spring里面 @Controller和@RestController注解的区别相关推荐

  1. Spring中@Controller和@RestController之间的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller, RestController的不同点 @C ...

  2. java controller注解原理_@Controller、@RestController注解区别详解

    @Controller.@RestController注解区别: @RestController 注解相当于 @Controller + @ResponseBody 合在一起的作用. 一.@Contr ...

  3. Controler和RestController注解的区别

    如果只是使用RestController注解Controller层,则Controller层中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewReso ...

  4. Controller和RestController的区别

    1. Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.  Controller, RestController的不同点 @C ...

  5. springmvc 中@Controller和@RestController的区别

    1.Controller, RestController的共同点 都是用来表示Spring某个类的是否可以接收HTTP请求 2.Controller, RestController的不同点 @Cont ...

  6. @RestController和@Controller注解的区别

    2019独角兽企业重金招聘Python工程师标准>>> @RestController和@Controller是我们在前端控制层用在类上面的一个注解,这个我们大家都很熟悉. @Res ...

  7. spring boot中@ResponseBody等注解的作用与区别

    在使用springmvc框架的时候,在处理json的时候需要用到spring框架特有的注解@ResponseBody或者@RestController注解,这两个注解都会处理返回的数据格式,使用了该类 ...

  8. Springboot中艾特Controller和艾特RestController之间的区别

    先说一下,头条题目不让打@,真的抱歉. springboot中@RestController和@Controller的区别,其实是一个很容易忽略的点.说一下我的踩坑经历,因为之前项目是前后端分离的,前 ...

  9. Spring MVC 中的基于注解的 Controller

    为什么80%的码农都做不了架构师?>>>    Spring MVC 中的基于注解的 Controller @Controller 基于注解的 Controller   终于来到了基 ...

最新文章

  1. django项目更新图片后,页面图片不更新
  2. Mobaxterm常用的指令(基于linux)
  3. 01-gt;选中UITableViewCell后,Cell中的UILabel的背景颜色变成透明色
  4. LeetCode 16 3Sum Closest(最接近的3个数的和)
  5. 用SQL语句更改数据库名,表名,列名
  6. 前端之JavaScript 02
  7. 八伟大的工具,Windows用户永远都不想错过
  8. c语言数码管的动态显示时间,8位数码管动态显示时间,可调节,调节的数闪烁显示...
  9. 面试题之Java内存区域
  10. Vue-Cli4笔记
  11. cron和crontab_Linux crontab命令创建和管理Cron作业
  12. hdu 4908 BestCoder Sequence
  13. vue案例todolist备忘录
  14. js实现简单pdf打印功能
  15. 华北电力计算机类哪个专业好,华北电力大学哪个专业好就业
  16. 从零开始学前端 - 3. HTML 常用标签_2
  17. cfg80211 subsystem中的wiphy
  18. 【SNS】什么是精英?什么是草根?为什么要SNS?
  19. 我对2021年前端团队的规划
  20. 调整oracle服务器时间,oracle数据库因一次服务器时间调整引发的实例宕机注意事项及解决方案...

热门文章

  1. 比较ArrayList和数组的区别
  2. TCP socket心跳包示例程序
  3. 函数wait、waitpid、孤儿进程、僵尸进程
  4. 这个回答让我错失offer!成功收获美团,小米安卓offer
  5. readonly的用法
  6. 结对项目-小学生四则运算系统网页版项目报告
  7. 【Lintcode】018.Subsets II
  8. python基础——使用模块
  9. (6)css盒子模型(基础下)
  10. 初学 Unsupervised feature learning and deep learning--Sparse autoencoder