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

摘要:
@ Controller@ResponseBodypublicclassMyController{}@RestControllerpublicclassMyRestController{}@Controller@ResponseBodypublicclassMyController{}@RestControllerpublicclassMyRestController{}4.0的一个重要新改进是@RestController注释,它继承自@Controller注释。通过使用此功能,我们可以在不使用@Controller和特殊的@RestController的情况下开发REST服务。当您实现RESTful web服务时,响应将始终通过响应主体发送。为了简化开发,Spring4.0提供了一个特殊版本的控制器。

1. Controller, RestController的共同点

     都是用来表示Spring某个类的是否可以接收HTTP请求


2.  Controller, RestController的不同点

     @Controller标识一个Spring类是Spring MVC controller处理器

     @RestController:  @RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。


示例如下:

  1. @Controller  
  2. @ResponseBody  
  3. public class MyController { }  
  4.   
  5. @RestController  
  6. public class MyRestController { }  
Spring中@Controller和@RestController之间的区别第3张
@Controller
@ResponseBody
public class MyController { }

@RestController
public class MyRestController { }

4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解。4.0之前的版本,Spring MVC的组件都使用@Controller来标识当前类是一个控制器servlet。

使用这个特性,我们可以开发REST服务的时候不需要使用@Controller而专门的@RestController。


当你实现一个RESTful web services的时候,response将一直通过response body发送。为了简化开发,Spring 4.0提供了一个专门版本的controller。下面我们来看看@RestController实现的定义:

Java代码  Spring中@Controller和@RestController之间的区别第4张
  1. @Target(value=TYPE)  
  2.  @Retention(value=RUNTIME)  
  3.  @Documented  
  4.  @Controller  
  5.  @ResponseBody  
  6. public @interface RestController  
@Target(value=TYPE)
 @Retention(value=RUNTIME)
 @Documented
 @Controller
 @ResponseBody
public @interface RestController


来自为知笔记(Wiz)


免责声明:文章转载自《Spring中@Controller和@RestController之间的区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL 的简单介绍及实施【opencv.js】Mat 类型对象的创建、复制以及类型转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 最火框架XUtils之注解机制具体解释

在上一篇文章Android 最火的高速开发框架XUtils中简介了xUtils的基本用法,这篇文章说一下xUtils里面的注解原理。 先来看一下xUtils里面demo的代码: @ViewInject(R.id.tabhost) private FragmentTabHost mTabHost; @ViewInject(R.id.big_img...

命令执行漏洞

1、命令执行(Command Execution)漏洞即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限 2、命令执行漏洞可能造成的原因是Web服务器对用户输入命令安全检测不足,导致恶意代码被执行 3、更常见的命令执行漏洞是发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等 DVWA low 分析代码...

JS页面绝对定位元素拖动

一.mousedown、mousemove和mouseup 拖着目标元素在页面任意位置 如果要设置物体拖拽,那么必须使用三个事件,并且这三个事件的使用顺序不能颠倒。 1.onmousedown:鼠标按下事件2.onmousemove:鼠标移动事件3.onmouseup:鼠标抬起事件 重点: 1、一定要绝对定位,脱离文档流才可以移动。 2、绑定拖拽的元素,移...

BeanUtil拷贝

拷贝vo对象 一些查询到的数据很多是不需要的,可以创建vo对象,对需要的对象属性进行拷贝 maven依赖 <dependency>   <groupId>org.projectlombok</groupId>   <artifactId>lombok</artifactId>   <vers...

Linux上配置使用iSCSI详细说明

本文详细介绍iSCSI相关的内容,以及在Linux上如何实现iSCSI。 第1章 iSCSI简介 1.1 scsi和iscsi 传统的SCSI技术是存储设备最基本的标准协议,但通常需要设备互相靠近并用SCSI总线连接,因此受到物理环境的限制。 iSCSI(Internet Small Computer System Interface),顾名思义,iS...

YYModel底层解析- Runtime

这段时间一直在忙新的需求,没有时间来整理代码,发表自己技术博客,今天我们来看一下YYModel的底层解析以及如何使用,希望对大家有所帮助! 一 概述 概括 YYModel是一个轻量级的JSON模型转换库,它的思路非常清晰代码风格也很好,所以还是建议大家看一下底层实现的逻辑,也可以从源码加深对Runtime的理解。 简介 下面是YYModel第三方库的一些代...