Spring @Controller 和@RestController注解

1.概述

在本快速入门教程中,我们将讨论Spring MVC中@Controller@RestController注解之间的区别。

第一个注解@Controller用于传统的Spring控制器,并且很长时间以来一直是框架的一部分。
另一个注解@RestController是是为了简化的RESTful Web服务的创建在Spring 4.0引入了。这是一个便利的注解,它将@Controller@ResponseBody结合在一起,因此无需再使用@ResponseBody注解来注释控制器类的每个请求处理方法。

2. Spring MVC @Controller

可以使用@Controller注解对经典控制器进行标记。它是@Component类的专门化,并允许通过类路径扫描自动检测实现类。
在请求处理方法上,@Controller通常与RequestMapping注解结合使用。
让我们看一下Spring MVC控制器的简单示例:

@Controller
@RequestMapping("books")
public class SimpleBookController {
    @GetMapping("/{id}", produces = "application/json")
    public @ResponseBody Book getBook(@PathVariable int id) {
        return findBookById(id);
    }
 
    private Book findBookById(int id) {
        // ...
    }
}

请求处理方法带有@ResponseBody注解。此注解允许将返回对象自动序列化为HttpResponse对象。

3. Spring MVC @RestController

@RestController是控制器的专用版本。它包含@Controller@ResponseBody注解,因此简化了控制器的实现:

@RestController
@RequestMapping("books-rest")
public class SimpleBookRestController {
     
    @GetMapping("/{id}", produces = "application/json")
    public Book getBook(@PathVariable int id) {
        return findBookById(id);
    }
 
    private Book findBookById(int id) {
        // ...
    }
}

控制器带有@RestController注解,因此不需要@ResponseBody
控制器类的每种请求处理方法都会自动将返回对象序列化为HttpResponse对象。

猜你喜欢

转载自blog.csdn.net/CPOHUI/article/details/106026699
今日推荐