Spring RequestMappingInfo compareTo order

时间:2014-09-05 17:37:19

标签: java spring spring-mvc servlets

我感兴趣的是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曾经有过不同的行为。任何人都可以就此问题发表评论或建议修复吗?

1 个答案:

答案 0 :(得分:0)

我通过将/**的声明更改为/**/**/**来实施快速解决方案。它很难看,但与之前完全一样,并解决了问题。我希望作为框架的一部分,我会做一些事情。