mvc:annotation-driver的作用

一,作用
Spring 3.0.x中使用了mvc:annotation-driven後,默認會幫我們註冊默認處理請求,參數和返回值的類,其中最主要的兩個類:DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter ,分別爲HandlerMapping的實現類和HandlerAdapter的實現類,從3.1.x版本開始對應實現類改爲了RequestMappingHandlerMapping和RequestMappingHandlerAdapter。

HandlerMapping的實現類的作用
實現類RequestMappingHandlerMapping,它會處理@RequestMapping 註解,並將其註冊到請求映射表中。

HandlerAdapter的實現類的作用
實現類RequestMappingHandlerAdapter,則是處理請求的適配器,確定調用哪個類的哪個方法,並且構造方法參數,返回值。

當配置了mvc:annotation-driven/後,Spring就知道了我們啓用註解驅動。然後Spring通過context:component-scan/標籤的配置,會自動爲我們將掃描到的@Component,@Controller,@Service,@Repository等註解標記的組件註冊到工廠中,來處理我們的請求。

二,使用場景
如果在web.xml中servlet-mapping的url-pattern設置的是/,而不是如.do。表示將所有的文件,包含靜態資源文件都交給spring mvc處理。就需要用到<mvc:annotation-driven />了。如果不加,DispatcherServlet則無法區分請求是資源文件還是mvc的註解,而導致controller的請求報404錯誤。

 <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
 </servlet-mapping>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章