最近和同事討論一個spring mvc的問題,問到HandlerMapping與HandlerAdapter有什么關(guān)系?雖然使用spring mvc時間也不短,但是瞬間能起來的只有兩個關(guān)鍵詞:

  • @RequestMapping,這個經(jīng)常用的,每個 Controller下面的action方法上一般都會定義一個特有的url路徑。當(dāng)HTTP請求請求發(fā)送到服務(wù)端后會根據(jù)url來查找應(yīng)該執(zhí)行哪個Controller下面的哪個action,我理解為url與java代碼的一個路由關(guān)系。

    @RequestMapping(value = "/bss/{priceId}", method = RequestMethod.GET)    public ValueResult<ProductPrice> getProductPrice(HttpServletRequest request,                                                                 @Min(value = 1,message = "priceId不合法")                                                                 @PathVariable final long priceId)  {        //省略
    }
  • HandlerInterceptor,這個也是經(jīng)常用的,做請求攔截時比較常用。

上面兩個關(guān)鍵詞盡管與問題有所關(guān)聯(lián),但很明顯不是主要的,核心還是這兩個接口都是做什么的,兩者之間有什么互動。于是我們可以從一個請求開始調(diào)試下spring mvc的調(diào)用過程,以此來分析它們的作用以及關(guān)系。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式