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

Spring调用@RestController接口报UUID构造器参数名无法解析错误

报错原因
  • Java 注解的继承规则中,方法参数上的注解默认不会被子类重写方法的对应参数继承,你在ComputationCallback接口startTask方法参数上标注的@RequestParam(value = "taskId"),不会被实现类ComputationCallbackController的重写方法识别。
  • 当方法参数没有显式标注@RequestParam时,Spring MVC 会将其判定为模型属性,尝试通过反射调用UUID的构造函数实例化对象,而UUID(long,long)构造函数的参数名在编译后默认没有保留,因此触发找不到参数名的报错。
解决方案

推荐优先使用以下最稳定的方案:
在实现类的方法参数上补充@RequestParam注解,明确指定参数绑定来源:

@RestController
public class ComputationCallbackController implements ComputationCallback
{
    @Override 
    public boolean startTask(@RequestParam(value = "taskId") UUID taskId)
    {
        // 原有业务逻辑
    }
}

补充注解后,Spring 会自动从请求的查询参数中读取taskId的字符串值,通过内置的类型转换器直接转为UUID对象,不会再走模型属性的实例化逻辑,报错即可解决。

如果需要把参数注解统一写在接口侧,也可以搭配以下配置生效:
在项目的编译插件中添加-parameters编译参数,保留方法参数名信息,以Maven为例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <compilerArgs>
            <arg>-parameters</arg>
        </compilerArgs>
    </configuration>
</plugin>

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:45:03