spring mvc 中的數據綁定進階篇
今天的主題是一個熟悉java的你,基本天天用到的一個註解:@RequestBody
思考
這個註解的作用是什麼
同樣的請求,加上註解和不加區別是什麼
對於這個註解的處理過程,我們可以通過什麼方式參與進去
實驗
示例代碼
請求方式:POST
請求報文頭:Content-Type:application/json
請求報文體:{"name":"seven","age":20}
結果
解析
源碼解析(部分源碼)
看到源碼,應該早已經明白大半了,RequestResponseBodyMethodProcessor 是專門用來處理RequestBody註解的
Object arg = readWithMessageConverters(webRequest, parameter, parameter.getNestedGenericParameterType());說明spring根據請求類型,選擇合適的消息處理器來處理消息的,
我們再來看下消息處理器的處理流程,如下
消息處理流程
根據contentType選擇消息處理器
真正讀取請求體前,執行beforeBodyRead
根據參數類型,讀取消息體,並轉化對應的參數類型
讀取消息後,執行afterBodyRead
那麼我們是否可以就應該可以參與到beforeBodyRead和afterBodyRead中去,當然,讀取消息是根據contentType來的,我們也可以通過自定義HttpMessageConverter來讓指定的contentType走我們自定義的消息轉換器
微信公眾號:宋坤明
如果您覺得對您有所幫助,記得轉發點贊哦
如有問題或建議,請公眾號留言或者直接微信聯繫我
下面的是我的公眾號二維碼圖片,歡迎關注我。
圖注:宋坤明公眾號
TAG:宋坤明 |