1. 程式人生 > >springMVC配置介紹

springMVC配置介紹

springmvc 是spring下的一個模組

    Spring和springmvc和作為兩個獨立的容器,會把掃描到的註解物件分別放到兩個不同的容器中,
    Springmvc容器是spring容器的一部分,他們訪問物件的範圍如下所示:
        1:Springmvc子容器可以訪問spring父容器中的物件

        2:spring父容器不能訪問springmvc子容器中的物件

一般這樣配置springmvc容器:

    

2.在spring-mvc.xml配置檔案中,需要<mvc:annotation-driven />,

這個方法是為我們預設註冊2個bean: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等註解標記的元件註冊到工廠中,來處理我們的請求。

3.如果我們將所有的bean都放入spring容器,而不會放到springmvc子容器中,當訪問專案的時候,springmvc找不到處理器對映器,和其對應的Controller,進而報404錯誤!

 

4.不用spring容器,只用springmvc容器行不行呢?
答案:是可以的,在這個裡面可以同時掃描Controller層、service層、dao層的註解。

5.在springmvc 和 spring 都有註解掃描的前提下,能不能將事務配置在Controller層?
答案:是不能的,因為事務管理器是配置在spring容器中的,如果將事務配置在Controller層的話,spring容器就訪問不了springmvc子容器,進而無法訪問到事務物件。進而導致事務失效。