日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC和REST中@RestController和@Controller注释之间的区别

發布時間:2023/12/3 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC和REST中@RestController和@Controller注释之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring MVC中的@RestController注釋不過是@Controller和@ResponseBody注釋的組合。 它已添加到Spring 4.0中,以簡化在Spring框架中RESTful Web Services的開發。 如果您熟悉REST Web服務,您就會知道Web應用程序與REST API之間的根本區別在于,Web應用程序的響應通常是HTML + CSS + JavaScript的視圖,而REST API只是以以下形式返回數據: JSON或XML。 這種差異在@Controller和@RestController批注中也很明顯。 @Controller的工作是創建模型對象的Map并找到一個視圖,但是@RestController只是返回對象,而對象數據@RestController JSON或XML的形式直接寫入HTTP響應中。

這也可以使用傳統的@Controller和@ResponseBody批注來完成,但是由于這是RESTful Web服務的默認行為,因此Spring引入了@RestController ,它將@Controller和@ResponseBody的行為結合在一起。

簡而言之,Spring MVC中的以下兩個代碼段相同:

@Controller @ResponseBody public class MVCController { .. your logic }@RestController public class RestFulController { .... your logic }

顯然,每個人都只想聲明一個注解,而不是兩個。 另外, @RestController比前兩個更明顯。

Spring中的@Controller和@RestController是什么?

在Spring框架中, Controller是一個類,它負責準備模型Map,其中包含要由視圖顯示的數據以及選擇正確的視圖本身。 它也可以使用@ResponseBody批注直接寫入響應流并完成請求。

直接寫入響應流的行為對于響應對RESTful Web服務的調用非常有用,因為在這里,我們只是返回數據,而不是返回我早先有關Spring MVC內部工作方式的解釋中所述的視圖。

如果您在Spring 4之前(例如在Spring 3或Spring 3.1中)開發了RESTful Web服務,那么通過使用@Controller和@ResponseBody的組合來創建RESTful響應,您將會很熟悉。 Spring人意識到了這個問題,并創建了@RestController 。

現在,您無需使用@Controller和@RestponseBody批注。 相反,您可以使用@RestController提供相同的功能。 簡而言之,它是一種便捷控制器,它將@Controler和@Response主體的行為組合為一個。

如果您更想了解在Spring中開發RESTFul Web Service的高級技術,可以進一步將Eugen Paraschiv的REST與Spring Master類一起加入。

Spring中@RestController和@Controller之間的區別

現在,您已經熟悉了這兩個注釋,現在是分析@RestController和@Controler之間的某些事實差異的好時機。 這是一個非常重要的概念,不僅從訪談的角度來看,而且從Spring Core和Spring Web應用程序開發人員認證中也是如此。 如果您正在準備Spring認證 ,則應該熟悉這些細微的差異。 此外,您還可以查看免費的Spring考試,以了解有關考試格式和問題級別的信息。

無論如何,讓我們回到重點,這是這兩個注釋之間的一些重要區別。

  • @Controller是一個通用注釋,用于將類標記為Spring MVC Controller,而@RestController是RESTFul Web服務中使用的特殊控制器,等效于@Controller + @ResponseBody 。
  • @RestController是相對較新的,僅在Spring 4.0上添加,但是@Controller是一個舊的注釋,自Spring開始支持注釋以來就存在,并正式在Spring 2.5版本中添加。
  • @Controller批注指示該類是“控制器”,例如Web控制器,而@RestController批注指示該類是一個控制器,其中@RequestMapping方法默認情況下采用@ResponseBody語義,即為REST API服務。
  • @Controller是@Component注釋的特化,而@RestController是@Controller注釋的特化。 它實際上是一個使用@Controller和@ResponseBody注釋的便捷控制器,如下所示。 @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @interface RestController

    這是@Controller聲明的樣子:

    @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Component public @interface Controller
  • Spring MVC中@Controler和@RestCotroller之間的主要區別之一是,一旦將一個類標記為@RestController則每個方法都將寫入域對象而不是視圖。 您可以查看Bryan Hassen的Spring MVC 4簡介,以了解有關如何在基于Spring的應用程序中使用@RestController批注的更多信息。
  • @RestController和@Controller之間的另一個關鍵區別是,一旦使用@ResponseBody注釋了該類, @RestController @ResponseBody在每個處理程序方法上都使用@RestController ,如下所示:

    使用@RestControler:

    @RestController public class Book{@RequestMapping(value={"/book"}) public Book getBook(){ //... return book; } }

    沒有@RestController:

    @Controller public class Book{@RequestMapping(value={"/book"}) @ResponseBody public Book getBook(){ //... return book; } }
  • 您可以看到,如果使用Spring MVC @Controller批注創建RESTful響應 ,則需要使用@ResponseBody批注對每個方法進行批注,而在使用@RestController時則不需要。 它不僅使您的代碼更具可讀性,而且還為您節省了幾個按鍵。

    這是一個使用@RestController和SpringBoot框架的簡單HelloWorld示例:

    這就是Spring MVC和REST中@Controller和@RestController批注之間的區別 。 @RestController是同時使用@Controller和@ResponseBody批注的快捷方式。

    Spring在Spring 4中有目的地添加了此批注,以使使用Spring框架的RESTful Web服務開發更加容易。 它可以根據請求的MIME類型將響應直接轉換為JSON或XML。

    因此,如果要創建RESTful Web服務,最好使用@RestController不是將@Controller組合到@ResponseBody 。

    如果您想了解有關使用Spring和Spring Security框架開發RESTful Web服務的更多信息,建議您將Eugen Paraschiv的REST與Spring Coaching一起加入。 Eugen在Java中開發和保護RESTful Web服務方面具有一些良好的現實世界經驗,該課程是從他的豐富經驗中受益的好機會。

    翻譯自: https://www.javacodegeeks.com/2017/08/difference-restcontroller-controller-annotation-spring-mvc-rest.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Spring MVC和REST中@RestController和@Controller注释之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。