javascript
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聲明的樣子:
@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Component public @interface Controller使用@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注释之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vivo X100系列首发!联发科回应天
- 下一篇: jdeveloper_适用于JDevel