You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot升级后@GetMapping空路径无法同时兼容有无请求参数的问题

Spring Boot升级后@GetMapping空路径无法同时兼容有无请求参数的问题

我有一个Spring Boot应用,在类级别使用了@RequestMapping,方法级别用了@GetMapping。下面是我的控制器简化版本:

@RestController
@RequestMapping("/hello")
class HelloController {

    @GetMapping("")
    fun test(@RequestParam("name", required = false) name: String?): String {
        return "hello " + (name ?: "world")
    }
}

当我不带name参数调用/hello时,一切正常,返回"hello world"。

但当我调用/hello?name=banana时,却没有按预期工作,出现了以下错误:

No static resource hello.

我试过把@GetMapping("")改成@GetMapping("/"),但这样的话,不带可选参数调用/hello就不行了(带?name=batman时可以正常工作)。有没有办法让Spring Boot同时正确处理两种情况(带请求参数和不带请求参数)?

补充信息:
这是一次回归故障,源于我把Java从17升级到21,同时把Spring Boot从2.7.5升级到3.2.5。在升级之前这个功能是正常工作的。

我注意到Spring Boot的文档中提到:

@RequestMapping不能与同一元素(类、接口或方法)上声明的其他@RequestMapping注解一起使用。如果在同一元素上检测到多个@RequestMapping注解,会记录一条警告,并且只会使用第一个映射。这也适用于组合的@RequestMapping注解,如@GetMapping、@PostMapping等。

但我不确定在我的使用场景下该如何避免这个问题。

备注:内容来源于stack exchange,提问作者Robin Sving

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:08:10