2013-01-11 82 views
3

我想將一些度量收集添加到Spring MVC應用程序。可以說我有一個控制器,其映射是:Spring MVC:沒有參數的日誌控制器路徑

/User/{username}/Foobar 

我想收集與路徑的所有控制器映射調用指標。現在我可以創建一個處理程序/攔截器,並查看請求,但會給我:

/User/Charlie/Foobar 

這不是我想要的。我希望控制器映射自己的日誌。我不想爲每個控制器添加一些東西。如果我可以幫忙的話,我寧願不使用AOP。

回答

2

事實證明,Spring掛起請求本身的最佳匹配控制器模式。你可以從這樣的處理程序攔截器中得到這個:

(String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE) 
+0

更容易,明確。 – madth3

2

我能想到的兩種選擇:

  1. 在我看來,匹配的結果在類org.springframework.web.servlet.handler.AbstractUrlHandlerMapping,它記錄獲得的圖案(見線266)獲得。我會嘗試啓用該類的日誌記錄,並查看輸出是否有助於您的目的。

  2. (複雜)

    擴展org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping覆蓋從AbstractUrlHandlerMapping和記錄繼承了lookupHandler方法/註冊後,你所需要的。根據this class documentation,您可以註冊一個不同的號碼,以便DispatcherServlet使用您的版本。

    在Spring 3.2.x DefaultAnnotationHandlerMapping已棄用,因此必須使用不同的類。