在Spring 3.1之前,類型和方法級別的映射是在兩個分開的步驟中檢查的,一個控制器首先被DefaultAnnotationHandlerMapping選擇到,實際的方法調用是在AnnotationMethodHandlerAdapter。
在spring 3.1中,RequestMappingHandlerMapping 就已經決定了哪些方法需要被調用,思考一下控制器的方法,每一個方法都包含了@RequestMapping信息。
它也增加了一些新的功能。對於HandlerInterceptor和HandlerExceptionResolver可以預期到去處理的方法,那麼它就會允許去檢查方法,例如參數和註解等,處理的URL不再需要分隔在不同的處理器中。
下面的一些事情不再成爲可能:
1. 首先選擇一個控制器爲SimpleUrlHandlerMapping或者BeanNameUrlHandlerMapping,然後再方法上加@RequestMapping註解。
2. 依靠方法的名字來作爲備用機制去區分兩個不同的基於@RequestMapping的註解的方法而不是根據URL,在新的@RequestMapping已經提供了URL精確匹配。
3. 如果控制器沒有找到合適的方法,那麼將有一個默認的方法會執行,然而在新的支持類中,如果沒有一個方法匹配,那麼會拋出404的錯誤代碼。