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 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天5 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源