Spring Controller引數繫結原始碼解析

2021-10-05 08:44:42 字數 799 閱讀 6616

呼叫dispatcherservletdodispatcher

呼叫httprequesthandleradapterhandle(httpservletrequest request, httpservletresponse response, object handler)

直到呼叫invocablehandlermethod.invokeforrequest,通過此方法解析請求引數的值

如果是@requestparam引數,會去獲取requestparammethodargumentresolver來解析繫結引數,最後呼叫該解析器的request.getparametervalues(name)來獲取引數值

如果是@requestbody引數,會獲取到requestresponsebodymethodprocessor來解析引數,最後通過呼叫abstractjackson2httpmessageconverter.read方法,通過jackson來解析引數

如果直接引數為物件,會獲取到modelattributemethodprocessor來解析引數,會先去建立乙個物件,然後通過servletrequestdatabinder.bind方法呼叫物件的set方法,將值繫結到物件上

azkaban web server原始碼解析

azkaban主要用於hadoop相關job任務的排程,但也可以應用任何需要排程管理的任務,可以完全代替crontab。azkaban主要分為web server 任務上傳,管理,排程 executor server 接受web server的排程指令,進行任務執行 1.資料表 projects 工...

JDK LinkedHashMap原始碼解析

今天來分析一下jdk linkedhashmap的源 public class linkedhashmapextends hashmapimplements map可以看到,linkedhashmap繼承自hashmap,並且也實現了map介面,所以linkedhashmap沿用了hashmap的大...

c gdb 繫結原始碼 GDB列出原始碼

在使用 gdb 除錯程式時,我們會經常需要展示程式中的 但是列印出的 可能和原始檔中的不同,為什麼這麼說呢?我們在 gdb準備除錯階段 章節中講到過 gcc 編譯器允許 g和 o選項同時使用,也就是說 gdb 可以除錯優化後的程式。優化的程式中會在原始檔中的某些地方改變,所以和編寫的檔案和程式執行的...