簡體   English   中英

Spring MVC標簽配置

[英]spring mvc tag configuration

1,在spring 3.0文檔中,關於mvc:annotation-driven是:

“這個標簽注冊了Spring MVC分發請求到@Controllers所需的DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter bean。”

但我沒有將此標簽注入任何spring配置文件中,對此我確信。
那么為什么我的應用程序可以在沒有該請求的情況下將請求調度到@Controllers?

2,將mvc:default-servlet-handler注入我的應用程序以處理靜態資源后,所有控制器都無法正常工作,只是在網頁上找不到404錯誤,但靜態資源沒問題。

我發現它可能是由mvc:annotation驅動的

不幸的是,在添加了mvc:annotation-driven之后,自定義的攔截器停止工作。 這是攔截器的定義:

<bean id="currentMemberInterceptor"  class="com.skill.common.CurrentMemberInjectionInterceptor" />

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">  
    <property name="interceptors">  
        <list>
            <ref bean="currentMemberInterceptor" />
        </list>  
    </property>  
</bean>

如果攔截器定義更改為mvc標簽,則攔截器可以工作,例如:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/" />
        <bean class="com.skill.common.CurrentMemberInjectionInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

閱讀彈簧參考后,我無法理解這些標簽和關系。

請幫助,謝謝!

事實是,當您不提供任何配置時,Spring會在許多地方使用默認的后備配置( 默認策略 )。

對於處理程序映射和適配器也是如此。 如果您的應用程序上下文中沒有這些,Spring只會嘗試注冊一些默認bean。 但是,一旦您定義了至少一個匹配類型的bean,它就不會嘗試注冊任何默認值,並且您是一個人(如果您考慮一下,這是很有意義的)。

請參閱DispatcherServlet依賴項初始化代碼,並檢查默認的后備配置以查看默認值。


配置名稱空間有時可能對其內部運作有些神秘。 當我不明白標記在做什么時,我通常會檢查標記處理程序的源代碼(這些類的命名約定是"NameOfTheTag"BeanDefinitionParser )。 您可以通過檢查AnnotationDrivenBeanDefinitionParser<mvc:annotation-driven />后面的類)來自己嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM