我想將一些度量收集添加到Spring MVC應用程序。可以說我有一個控制器,其映射是:Spring MVC:沒有參數的日誌控制器路徑
/User/{username}/Foobar
我想收集與路徑的所有控制器映射調用指標。現在我可以創建一個處理程序/攔截器,並查看請求,但會給我:
/User/Charlie/Foobar
這不是我想要的。我希望控制器映射自己的日誌。我不想爲每個控制器添加一些東西。如果我可以幫忙的話,我寧願不使用AOP。
我想將一些度量收集添加到Spring MVC應用程序。可以說我有一個控制器,其映射是:Spring MVC:沒有參數的日誌控制器路徑
/User/{username}/Foobar
我想收集與路徑的所有控制器映射調用指標。現在我可以創建一個處理程序/攔截器,並查看請求,但會給我:
/User/Charlie/Foobar
這不是我想要的。我希望控制器映射自己的日誌。我不想爲每個控制器添加一些東西。如果我可以幫忙的話,我寧願不使用AOP。
事實證明,Spring掛起請求本身的最佳匹配控制器模式。你可以從這樣的處理程序攔截器中得到這個:
(String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE)
我能想到的兩種選擇:
在我看來,匹配的結果在類org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
,它記錄獲得的圖案(見線266)獲得。我會嘗試啓用該類的日誌記錄,並查看輸出是否有助於您的目的。
(複雜)
擴展org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
覆蓋從AbstractUrlHandlerMapping
和記錄繼承了lookupHandler
方法/註冊後,你所需要的。根據this class documentation,您可以註冊一個不同的號碼,以便DispatcherServlet
使用您的版本。
在Spring 3.2.x DefaultAnnotationHandlerMapping
已棄用,因此必須使用不同的類。
更容易,明確。 – madth3