【发布时间】:2014-03-28 07:55:15
【问题描述】:
我已经为 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
}
}
假设我们有一个这样的简单控制器,我正在发送这些请求:
1) /xxx/aaa/bbb/yyy/ -->好的,它将使用getPageSecond 方法映射并完成他的工作。
2) /xxx/aaa/bbb/yyy/23 --> 我觉得肯定是用getPageThird方法映射的,但是奇怪的是Spring是通过getPage方法捕获这个请求的。
我试图深入研究 Spring 代码以了解那里发生了什么,然后我发现了 AntPatternComparator。该比较器给出结果以括号计数,取较小的一个以获得最佳匹配。
为什么?第三个比其他的更具体,有什么问题吗?
【问题讨论】:
标签: java spring model-view-controller