我感兴趣的是Spring 3.2.x中RequestMappings的排序应该如何工作。我已尝试使用版本3.2.9和3.2.10。如果请求提取/xxx/a/b/c
并匹配映射/**
,/xxx/{a}/{b}/{c}
和/xxx/{a}/**
,则RequestMappingHandlerMapping.lookupHandlerMethod
中的比较会产生最佳匹配/**
。但是,我希望/xxx/{a}/{b}/{c}
成为最佳匹配。任何人都可以向我解释这个吗?
修改
因此,我查看了代码,发现RequestMappingInfo
使用AntPathMatcher
来比较模式匹配。后者的作用是首先检查完全匹配,然后计算每个的通配符,每个的大括号,将它们相加并返回差异。因此,它将/**
评估为比/xxx/{a}/{b}/{c}
更具体。但是,这是不正确的IMO和以前版本的Spring曾经有过不同的行为。任何人都可以就此问题发表评论或建议修复吗?
答案 0 :(得分:0)
我通过将/**
的声明更改为/**/**/**
来实施快速解决方案。它很难看,但与之前完全一样,并解决了问题。我希望作为框架的一部分,我会做一些事情。