我寫文章歷來追求通俗易懂,今天來深入探討一下@RequestBody注解。提起這個,所有做過mvc開發的同學應該都不陌生,使用上面肯定也是信手拈來。
所以我這里就簡單的提一下這個注解的使用:
1、當客戶端的HTTP請求參數contentType設置為:application/json
2、服務端的處理接口參數使用:@RequestBody注解,就會把客戶參數當成一個javaBean進行耦合字段賦值,簡單的說就是,把客戶的json對象轉換為javaBean對象
好了,現在真正進入今天的主題!我們來探究一下@RequestBody注解在后台中是如何工作的呢?這個后來就是指的spring框架。先給出注解的引用包:org.springframework.web.bind.annotation.RequestBody;很明顯就是屬於spring框架。所以在這里,我要給大家一個提示。在spring框架的世界里面,我們一定要把的spring框架當成一個整體來看,切記切記!!!所有springframework子包里面的類都是有聯系的。
ok又回到我們的主題上,在spring的世界里面,有一個最基本的東西就是攔截器。客戶的每一個HTTP請求過來的時候,都會經過它的層層把控。由於平實的開發中,除非特別的功能需求我們會單獨設置攔截器。其它時候都沒有去注意它。但是恰恰就是我們的忽視,讓我們漏掉了很多知識點。
總體的來說,在spring中,攔截器分為兩大類:
一、框架自身的攔截器
二、開發者自定義的攔截器
話不多說,直接給出答案!@RequestBody注解就是spring框架自身的攔截器在起左右,當請求過來的時候,框架會檢查被請求的controller方法接口中的注解,根據注解類型,調用不同的AOP處理程序進行處理。當然這里的AOP也是spring框架底層自身造已經定義好的,所以不需要我們再進行單獨設置。例如這里的@RequestBody注解調用的AOP處理程序,先是通過JoinPoint獲取該注解位置的參數,然后進行上面的數據耦合。看到了吧,實際上處理很簡單,最主要的就是這個框架自帶的AOP。
文章的結尾,我再簡單提一下注解的作用,大家記住:注解是一個特殊的類,它可以給對象、參數、方法添加額外的這個類信息。說白了就是添加了更多的信息,我們可以稱注解信息為元信息。我們通過java的運行時公共方法可以獲取這些信息。所以,注解只有當你定義了專門的注解處理程序的時候才有用,否則一無是處!今天的文章依舊很短,但是我們希望大家可以通過這個知識點,自行開拓思路。我只是一個引路人,知識需要自己進行消化!