requestMapping /** 和完整路径哪个优先级高
时间: 2023-12-19 18:06:54 浏览: 206
一文总结Spring 注解及作用详解
在Spring MVC中,`@RequestMapping`注解中的路径匹配规则是基于"最长路径优先"的原则。
当存在多个`@RequestMapping`注解,其中一个使用了`/**`通配符,另一个是完整路径时,匹配优先级如下:
1. 完全匹配的路径具有最高优先级。如果请求路径与完整路径完全匹配,则将优先选择该方法处理请求。
2. 如果请求路径没有与任何完整路径完全匹配,则将进一步检查使用了`/**`通配符的路径。
3. 使用了`/**`通配符的路径将匹配请求路径中的任意路径段。如果请求路径中的某个路径段与`/**`之前的部分完全匹配,该方法将被选择来处理请求。
4. 如果存在多个使用了`/**`通配符的路径,那么将选择最长的通配符路径来处理请求。
举个例子,假设有以下两个方法:
```java
@RequestMapping(value = "/api/user", method = RequestMethod.GET)
public String handleUserRequest() {
// 处理用户请求的逻辑
return "user";
}
@RequestMapping(value = "/api/**", method = RequestMethod.GET)
public String handleRequest() {
// 处理其他请求的逻辑
return "other";
}
```
如果请求路径是`/api/user`,则`handleUserRequest()`方法将被选择来处理请求,因为它完全匹配了请求路径。
如果请求路径是`/api/something/else`,则`handleRequest()`方法将被选择来处理请求,因为它使用了`/**`通配符,可以匹配任意路径。
综上所述,完整路径具有更高的优先级,它将优先于使用`/**`通配符的路径进行匹配。
阅读全文