2014-10-28 55 views
0

我想知道的是,如果我們創建自定義處理程序映射,則由spring mvc框架覆蓋創建的默認處理程序映射。我懷疑,因爲我在兩個項目中的一個是當我們在spring mvc中創建自定義處理程序映射時,默認處理程序映射是否被覆蓋?

  1. BeanNameHandlerMapping
  2. SimpleUrlHandlerMapping建立在調度員的servlet注入創建自定義的處理器映射,但在另外一個這些都不是在調度員的servlet註冊

我使用這兩個項目的彈簧3框架的不同版本。是不是因爲在春季版變3

我沒有得到默認的處理程序映射在春季3.0,但在春季3更高的版本越來越

致謝

回答

2

指定自定義HandlerMappingorder有最低int值,以便首先通過其他已註冊的HandlerMappings進行嘗試。

說明

在Web上下文搞清楚可用的HandlerMappings是DispatcherServlet初始化的一部分:

enter image description here

這種方法,被發現所有的註冊HandlerMapping S和,你可以看到它正在根據它們的定義順序對它們進行排序

enter image description here

否則它會回落的默認處理器映射:在BeanNameUrlHandlerMapping

+0

是initHandlerMapping(上下文)方法發現了所有的處理程序映射,並註冊它們。我的問題是,如果我創建一個自定義HandlerMapping(比如說MyCustomMapping)並指定最低的順序,以便它先嚐試,然後所有的默認映射BeanNameUrlHandlerMapping或其他默認映射註冊或不是? @dismitrisli – yoga 2014-10-29 04:44:03

+0

@yoga:再次看着上面的代碼,你可以找到答案。只有一個默認HandlerMapping,即BeanNameUrlHandlerMapping,並且只有在DispatcherServlet無法在上下文中找到任何顯式註冊的HandlerMappings(如自定義處理程序映射)時纔會註冊它。所以如果你定義*任何*處理程序映射/映射,這些將按照順序被使用,沒有默認值。 – dimitrisli 2014-10-29 08:10:43

+0

是的我也在想這個,但是在我的一個項目中我定義了自定義映射,但是默認映射BeanNameUrlHandlerMapping也得到了註冊,我通過將調試點放在上面的方法上進行了檢查。但在另一個項目中沒有註冊。只有春天的版本是不同的,因爲我在我的拳頭問題中提到 – yoga 2014-10-29 11:18:57

相關問題