DefaultAnnotationHandlerMapping不起作用,分析原因

開始是爲了實現一個全局的攔截器DefaultHandlerInterceptor,繼承HandlerInterceptorAdapter類

並把這個類注入到Spring的DefaultAnnotationHandlerMapping的interceptors中

配置如:

<!-- 處理在類級別上的@RequestMapping註解 -->
<bean
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="interceptors">
    <list>
        <!-- 多個攔截器,順序執行 -->
        <ref bean="SpringMVCInterceptor" />
        <ref bean="OpenSessionInViewInterceptor"/>
    </list>
    </property>
</bean>
<!-- 處理方法級別上的@RequestMapping註解 -->
<bean id="annotationMethodHandlerAdapter"
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
    <list>
        <bean
            class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=utf-8</value>
                <value>text/plain;charset=utf-8</value>
            </list>
            </property>
        </bean>
        <bean
            class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverterv2">
            <property name="objectMapper">
                <bean class="net.pm.misc.Hibernate4AwareObjectMapper" />
            </property>
        </bean>
    </list>
    </property>
</bean>

<!-- 表示使用cglib,而非JDK的動態代理,因爲Controller沒有實現接口,所以要配置這裏 -->
<aop:aspectj-autoproxy proxy-target-class="true"  />

 可是在DefaultHandlerInterceptor攔截器中,老是不進斷點.

原因:

配置了<mvc:annotation-driven/>

這個配置聲明

{沒有 defaultAnnotationHandlerMapping這個屬性,

對於@ResultMapping標籤的解析,用 “org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping” 這個類來處理.}

所以要去掉<mvc:annotation-driven />,去掉其默認配置,

否則會實例化兩個DefaultAnnotationHandlerMapping,並且不使用你配置的那個 DefaultAnnotationHandlerMapping.

 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter與<mvc:annotation-driven />關係與上同理.

 

發佈了86 篇原創文章 · 獲贊 94 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章