代码之家  ›  专栏  ›  技术社区  ›  sinuhepop

Spring MVC:禁用默认AnnotationHandlerMapping

  •  5
  • sinuhepop  · 技术社区  · 14 年前

    我在使用Spring MVC <mvc:annotation-driven />

    我已经实现了自己的映射处理程序来扩展DefaultAnnotationHandlerMapping,但我不确定如何使用它。我是这样宣布的:

    <bean class="es.kcsolutions.boulevard.DispatcherMappingHandler" />
    

    它可以工作,但是,显然,DefaultAnnotationHandlerMapping也可以工作,而且总是在我之前。有没有办法禁用它,只使用我的?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  3
  •   skaffman    14 年前

    我的建议是移除 <mvc:annotation-driven /> 总而言之。它实际上并没有做任何特别有用的事情——它声明的大多数bean都已经存在了。在您想要声明自己的处理程序映射或处理程序适配器的情况下,它会妨碍您的工作。

    所以把它拿出来,申报你自己的 DefaultAnnotationHandlerMapping bean,它应该可以工作。在99.9%的案例中,无需乱下订单。

        2
  •  -1
  •   Affe    14 年前

    如果您取出了defaultAnnotationHandlerMapping的任何显式声明,那么您的自定义映射器应该在调度器中替换它。(根据 javadoc )如果您需要/想要多个映射,那么您可以通过设置它们的order属性来控制它们。低阶数先执行。

    <bean class="es.kcsolutions.boulevard.DispatcherMappingHandler">
    <property name="order" value="0"/>
    </bean>
    
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="order" value="1"/>
    </bean>