Java Spring 框架 @Controller 與 @RestController的區別,你明白了嗎?
概述
@Controller注解長期用于傳統的spring MVC 框架Controller。@ RestController注解是在Spring 4.0 中引入的,以簡化RESTful Web 服務的創建。
Spring MVC/Spring BOOT中的@RestController注解其實就是@Controller和@ResponseBody注解的組合。
它被添加到Spring 4.0中,使得在Spring框架中開發RESTful Web服務更加容易。
如果對**REST Web 服務有所了解的小伙伴,**那么對 REST API 和 Web 應用程序之間的區別應該不陌生。
這是來自Web 應用程序的響應通常是視圖(HTML + CSS),因為它們是為人類觀眾準備的。
REST API只是以 JSON 或 XML 的形式返回數據,大多數 REST 客戶端都是程序。這種區別在@Controller和**@RestController**注解中也很明顯。
Spring MVC/BOOT中@Controller和@RestController的區別
- @Controller是在 Spring 中將類標記為控制器類的注解,而@RestController用于REST Web 服務,類似于@Controller和@ResponseBody。
- @Controller注釋表示該類是控制器,如 Web 控制器,而@RestController注釋表示該類是控制器,其中@RequestMapping方法默認采用@ResponseBody(即 REST API)。
- 關鍵區別在于,一旦用@RestController注釋類,就不需要在每個處理程序方法上都使用**@ResponseBody**。
- @Controller創建模型對象的映射并查找視圖,而**@RestController**只是簡單地返回對象和對象數據,直接以 JSON 或 XML 形式寫入 http 響應。
可以使用@Controller注釋和@ResponseBody注釋來完成@RestController的工作,RESTful Web 服務的默認的。Spring 引入了@RestController ,它結合了@Controller和@ResponseBody的功能。
例子
以下是 Spring 中相等的示例代碼。
- @ Controller
- @ RestController
以上兩段代碼在Spring MVC/Spring Boot中是同樣的操作。
結論
以上就是Spring MVC/Spring Boot的@Controller注解和@RestController注解的區別。