RequestMapping中的路径优先级

时间:2014-03-28 07:55:15

标签: java spring model-view-controller

我已经为那个here.打开了一个问题但我也想问一下stackoverflow人。

@Controller
@RequestMapping("/xxx")
public class MyController {

@RequestMapping("/**")
public ModelAndView getPage() {
   //some code
}

@RequestMapping("/**/yyy/")
public ModelAndView getPageSecond() {
   //some code
}

@RequestMapping("/**/yyy/{pathVariable}")
public ModelAndView getPageThird(@PathVariable("pathVariable") Integer num) {
   //some code
}

}

假设我们有一个简单的Controller,我发送这些请求:

1)/xxx/aaa/bbb/yyy/ - >好吧,它将使用getPageSecond方法进行映射,并将完成他的工作。

2)/xxx/aaa/bbb/yyy/23 - >我认为它必须使用getPageThird方法进行映射,但奇怪的是Spring正在通过getPage方法捕获此请求。

我试图深入了解Spring代码以了解那里发生的事情,然后我找到了 AntPatternComparator 。这个比较器给出结果以便括号计数,将较小的一个用于最佳匹配。

为什么呢?第三个比其他人更具体,有什么不对吗?

1 个答案:

答案 0 :(得分:1)

您可以手动将自己的RequestMappingHandlerMapping版本添加到您的应用程序上下文中,并使用patternMatchersetPathMatcher(PathMatcher pathMatcher)属性设置为您自己的实现,以解决您遇到的问题。< / p>