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