學習一種知識,我喜歡看看源碼是怎么進行它們類之間的關系以及方法的調用,是怎么實現的。這樣我才感覺踏實。
既然現在談到HandlerMapping,我們先知道HandlerMapping的作用:HandlerMapping的作用就是解析請求鏈接,然后根據請求鏈接找到執(zhí)行這個請求的類(HandlerMapping所說的handler,也就是我們寫的Controller或是Action)。
現在我們來了解HandlerMapping的繼承體系圖:
至于我們在配置文件中配置的BeanNameUrlHandlerMapping或者是SimpleUrlHandlerMapping,他們的目的是一樣的,只是通過請求鏈接來找handler的方式不一樣。
我們再來看看更詳細的繼承關系:
HandlerMapping的使用主要分為兩步:注冊和查找。
注冊是根據配置文件中的配置將一個字符串和一個Controller類以<key,value>的形式存入到Map中,這個key就是對應的url中的某個字段。
查找就是HandlerMapping根據url中的的某個字段,在Map中以這個字段為key值對應的Controller類,并將Controller類封裝成一個HandlerExecutionChain對象,HandlerExecutionChain中除了有Controller對象外,還有一組攔截器。
現在我簡單以SimpleUrlHandlerMapping為例子來分析HandlerMapping是如何根據請求鏈接找到Controller類的。
1.注冊