Spring MVC:@RequestMapping

在 Spring MVC 中,`@RequestMapping` 支持类级别和方法级别的组合。若类上配置了路径(如 `/hl`),方法上配置了子路径(如 `/func`),最终访问路径为两者的拼接。

关键点:

  1. 路径拼接规则:Spring 会自动处理斜杠。类路径 `/hl` 与方法路径 `/func` 拼接后为 `/hl/func`。即使方法路径写为 `func`(无前导斜杠)或 `/func`,结果通常一致,但建议统一使用前导斜杠以规范代码 。

  2. 唯一性约束:同一应用下,最终生成的完整 URL 路径必须唯一。如果存在另一个 Controller 的方法直接映射为 `/hl/func`,或者另一个类+方法组合也生成 `/hl/func`,启动时会报 `Ambiguous mapping` 异常 。

  3. 尾随斜杠差异:Spring Boot 3.x (Spring Framework 6) 默认不再忽略尾随斜杠。`/hl/func` 与 `/hl/func/` 被视为不同路径,需确保前端请求路径与后端定义严格匹配 。

代码示例:

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("/hl") // 类级别基础路径

public class HlController {

@GetMapping("/func") // 方法级别子路径

public String func() {

return "Accessed /hl/func";

}

}

```

访问地址: `GET http://localhost:8080/hl/func\`

避坑指南:

  • 避免在类或方法路径中使用连续斜杠(如 `//hl`),Spring 会将其规范化为单斜杠,但可能导致歧义或不可访问 。

  • 若需同时支持 `/func` 和 `/hl/func`,不能通过同一个 Controller 的简单组合实现,需定义两个独立的方法或使用重定向,因为一个方法只能映射一组确定的路径模式 。

相关推荐
学长毕设1 小时前
基于SpringBoot的野生动物公益保护平台设计与实现-附源码
java·spring boot·后端
SL_staff2 小时前
离散制造排程破局:JVS-APS 四步闭环落地实践(开发者视角)
java·产品·全栈
这个昵称不容易2 小时前
SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路
java·springboot·毕设
装不满的克莱因瓶3 小时前
【SpringAI Alibaba】ReactAgent记忆管理MessageTrimmingHook与MessageDeletionHook
java·人工智能·ai·ai编程·springai·springaialibaba
文丑颜不良啊3 小时前
LeetCode2241~2260题目解析
java·leetcode
文丑颜不良啊3 小时前
LeetCode2321~2340题目解析
java·leetcode
驭渊的小故事3 小时前
Spring AOP 核心概念与通知类型详解
java·后端·spring
vipxieliang3 小时前
ValidX vs 手写验证代码:开发效率对比实测
java·spring boot·后端
vipxieliang4 小时前
虚拟线程与 GraalVM:Spring Boot 3.x 云原生性能跃迁
java·spring boot·后端
Rain的Java大神之路4 小时前
面试官最烦的答案:“我用 Redis + Token”!接口幂等 8 种方案 + 四层防御,把重复扣款工单干到 0
java·后端·面试