天天看點

深入了解Spring MVC-處理器映射

如果Web工程是使用了Spring MVC,那麼他在啟動階段就會将注解@RequestMapping所配置的内容儲存到處理器映射(HandlerMapping)機制中去,然後等待請求的到來,通過攔截請求資訊與handlerMapping進行比對,找到對應的處理器(它包含控制器的邏輯),并将處理器及其攔截器儲存到HandlerExecutionChain對象中,傳回給DispatcherServlet,這樣DispatcherServlet就可以運作他們了。從上述論述中可以看到,HandlerMapping的主要任務是将請求定位到具體的處理器上。

關于@RequestMapping的配置項不多,這裡通過源碼來學習,代碼清單如下所示

;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
//配置請求映射名稱
    String name() default "";
    //通過路徑映射
    @AliasFor("path")
    String[] value() default {};
//通過路徑傳回的path映射
    @AliasFor("value")
    String[] path() default {};
//限制隻響應http請求類型,如POST,GET,PUT,OPTIONS,TRACE等
//預設情況下,可以響應全部的請求類型
    RequestMethod[] method() default {};
//當存在對應的http參數才響應請求。
    String[] params() default {};
//限定請求頭存在對應的參數時相應請求
    String[] headers() default {};
//限制http請求體送出類型,如"application/json","text/html"
    String[] consumes() default {};
//限制傳回的内容類型,僅當http請求頭中的(Accept)類型中包含該指定類型時才傳回。
    String[] produces() default {};
}