如何不将Handler Mapping添加到Spring DispatcherServlet

时间:2014-12-11 15:27:31

标签: java spring spring-mvc

我有一个SpringMVC应用程序。它有一个扩展DefaultAnnotationHandlerMapping的自定义类。此类用于某些元工具,以生成与MVC应用程序的API一起使用的报表和工具。它不需要由DispatchServlet使用。

我正在将此系统从Spring 3.2升级到4.1。此升级的结果之一是DispatchServlet中HandlerMappers的顺序发生了变化。现在,自定义类的优先级高于我们从中获取适当处理程序的RequestMappingHandlerMapping。

所以我的问题是:

  1. 有没有办法确保自定义类不会被添加到Dispatcher中?我没有配置它这样做。我认为Spring只是因为它是一个HandlerMapping
  2. 而捡起来
  3. 如果不是设置订单的最佳位置,那么我可以将其降低。 AbstractHandlerMapping为订单final做了getter和setter(所以我不能覆盖getter)。我试图在自定义类的构造函数中设置一个低优先级,但显然是spring然后将它重置为0。

1 个答案:

答案 0 :(得分:0)

通过DispatcherServlet以编程方式设置WebApplicationInitializer,并将DispatcherServlet#setDetectAllHandlerMappings(boolean)设置为false。

在这种情况下,Spring只会查找名为HandlerMapping的{​​{1}}。默认MVC配置提供的名称将具有该名称。