Spring中请求匹配多个RequestMapping时的路由优先级疑问
问题解答
当访问URL路径/specialContent时,一定会路由到handleSpecialContent()方法,核心原因是Spring MVC的请求映射匹配遵循「精确优先」的规则:
@GetMapping("/specialContent")是对固定路径的精确匹配,匹配精度最高;@GetMapping("/{content}")是带路径变量的模糊匹配,精度低于精确匹配。
Spring MVC在处理请求时,会自动对所有符合条件的映射按匹配精度从高到低排序,优先选择精度最高的映射对应的方法。哪怕调换两个方法的定义顺序,结果也不会改变——匹配优先级由路径的具体程度决定,和方法编写顺序无关。
你的控制器代码如下:
@RestController public class ContentController { @GetMapping("/specialContent") public Map<String, String> handleSpecialContent() { Map<String, String> map = handleContent("specialContent"); map.put("special", "true"); return map; } @GetMapping("/{content}") public Map<String, String> handleContent(@PathVariable String content) { HashMap<String, String> map = new HashMap<>(); map.put("content", content); return map; } }
内容的提问来源于stack exchange,提问作者Rishabh Bajpai
相关产品推荐
相关产品推荐

