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對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章