代码之家  ›  专栏  ›  技术社区  ›  Robert Campbell

如何更改SpringMVC中映射的URL的顺序?

  •  1
  • Robert Campbell  · 技术社区  · 16 年前

    我在运行SpringMVC 3.x,我有一个控制器 请求映射 注解(注释) 默认AnnotationHandlerMapping )我有一个 伺服前移控制器 通过 SimpleUrlhandlerMapping . 当我启动应用程序时,我看到以下内容:

    ...
    13:24:17,747 INFO  [DefaultAnnotationHandlerMapping] Mapped URL path [/{query}] onto handler [com.foo.controllers.BarController@1b20a36]
    13:24:17,997 INFO  [SimpleUrlHandlerMapping] Root mapping to handler [org.springframework.web.servlet.mvc.ParameterizableViewController@598535]
    13:24:18,044 INFO  [SimpleUrlHandlerMapping] Mapped URL path [/spring*.ftl] onto handler [org.springframework.web.servlet.mvc.ServletForwardingController@56eb62]
    13:24:18,044 INFO  [SimpleUrlHandlerMapping] Mapped URL path [/shared-resources/**] onto handler [org.springframework.web.servlet.mvc.ServletForwardingController@56eb62]
    ...
    

    当然,我的酒吧管理员会捕捉到所有的请求(如/spring eu en eu us.ftl),但我希望最后一次尝试。换句话说,我想要 SimpleUrlHandlerMapping 优先于 默认AnnotationHandlerMappings 在我的申请中。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Robert Campbell    16 年前

    我找到的最佳解决方案是更换 MVC:注释配置 显式 默认AnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter bean配置。然后我可以设置 秩序 两者的属性 SimpleUrlhandlerMapping (阶=0) 默认AnnotationHandlerMapping (阶数=1)。这将根据需要设置处理程序的优先级。

    我试图重新订购 MVC:注释配置 在下面 SimpleUrlhandlerMapping 但它没有根据需要更改处理程序优先级。

        2
  •  0
  •   skaffman    16 年前

    DispatcherServlet 应咨询各方面 HandlerMapping bean在beans文件中声明的顺序。第一个说“是的,我有一个地图”的人得到了奖励。

    如果您手动声明 SimpleUrlHandlerMapping 和 DefaultAnnotationHandlerMapping ,然后确保顺序正确。

    如果您不自己声明它们,那么Spring将使用缺省值,这是 BeanNameUrlHandlerMapping 其次是 默认AnnotationHandlerMapping .