Spring中@Controller和@RestController注释的区别

Spring中@Controller和@RestController注释的区别

Spring 注释 是提供有关程序的数据的元数据的一种形式。注释用于提供关于程序的补充信息。它对注释代码的操作没有直接影响。它不会改变已编译程序的操作。

@Controller注释: Spring @Controller注释也是@Component注释的专门化。@Controller注释表示一个特定的类充当 controller . Spring Controller注释通常与基于的注释处理程序方法结合使用 @RequestMapping注释。它只能应用于类。它用于将一个类标记为web请求处理程序。它主要用于Spring MVC应用程序。这个注释充当被注释类的原型,指出它的角色。dispatcher会扫描这些带注释的类,寻找映射的方法并进行检测 @RequestMapping 注释。

@RestController注释:在@RestController注释的帮助下,RestController用于创建restful web服务。这个注释在类级别使用,并允许类处理客户机发出的请求。让我们通过一个例子来理解@RestController注释。RestController允许处理所有REST api,如GET、POST、Delete和PUT请求。

现在让我们来找出两者之间的一个重大区别,如下所示。这里@Controller用于将类标记为Spring MVC控制器,而@RestController是一个方便的注释,它只添加了@Controller和@ResponseBody注释,下面的代码片段如下:

@Controller
@ResponseBody

class Controller
{
    ------
    ------
    ------
}

等价于

@RestController

class RestController
{
    ------
    ------
    ------
}

让我们最后通过表格形式总结它们之间的区别,表格形式如下:

@Controller @RestController
@Controller用于将类标记为Spring MVC控制器。 @RestController注释是RESTful Web服务中使用的一个特殊控制器,它是@Controller和@ResponseBody注释的组合。
它是@Component注释的一个特殊版本。 它是@Controller注释的专门版本。
在@Controller中,我们可以返回Spring Web MVC中的一个视图。 在@RestController中,我们不能返回视图。
@Controller注释表示类是一个类似于web控制器的“控制器”。 @RestController注释指出类是一个控制器,其中@RequestMapping方法默认采用@ResponseBody语义。
在@Controller中,我们需要在每个处理程序方法上使用@ResponseBody。 在@RestController中,我们不需要在每个处理程序方法上使用@ResponseBody。
它被添加到Spring 2.5版本中。 它被添加到Spring 4.0版本中。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程