springboot3.X 无法解析parameter参数问题

本文参考转载:https://oldmoon.top/post/191

简介

使用最新版的Springboot 3.2.1(我使用3.2.0)搭建开发环境进行开发,调用接口时出现奇怪的错。报错主要信息如下:

Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the ‘-parameters’ flag.

原因分析

首先,这是Spring新版本导致的。为什么会出现这个问题呢?原来是Spring 6.1之后,官方加强了很多错误校验和报错提示,本文这个错也是其中之一。

Spring表示:URL中的传参,必须使用@PathVariable声明用于接收的变量,如:

@DeleteMapping("/employees/{employeeId}") public String deleteEmployee(@PathVariable int employeeId) { ... } @PatchMapping("/employees/{id}/{firstName}") public String patchEmployee(@PathVariable Integer id, @PathVariable String firstName) { ... }

官方说明中一直强调@PathVariable的使用,并没有提及@RequestParam,参考官方文档@RequestParam会发现最后有一句话:

Note that use of@RequestParamis optional (for example, to set its attributes). By default, any argument that is a simple value type (as determined by BeanUtils#isSimpleProperty) and is not resolved by any other argument resolver, is treated as if it were annotated with@RequestParam.

翻译一下大概是:

注意@RequestParam的使用是可选的(例如,设置其属性)。 默认情况下,任何简单值类型(由 BeanUtils#isSimpleProperty 确定)且未由任何其他参数解析器解析的参数都将被视为使用@RequestParam注解。

根据原文及翻译,这自然让我认为,@RequestParam依然是可以省略的。

然而奇怪的是,当Springboot 3.2.1使用Maven管理项目时,如果不使用spring-boot-starter-parent作为父工程,那么接口中必须显式声明@RequestParam("name"),缺了其中的name也会报错。我清晰地记得我在旧版本的 Springboot 中经常省略 @RequestParam(“name”) 这种写法。

但如果不使用spring-boot-starter-parent作为父工程,好像@RequestParam变成了不可省略注解。大家搭建微服务和多模块时候,通常不会使用spring-boot-starter-parent作为父工程吧?还是只有我不用?。。。 还是尽量不要尝试新版本,会少踩很多坑

当请求URL中有正常参数时,如:http://localhost:8080/user/hello?name=zhangsan,其中name为一个参数,你的Controller代码大概如下所示:

java

@GetMapping("/hello") public RespPack<?> hello(String name) { return null; }

解决

这种现象不知道是不是官方的BUG,但目前我发现几种解决方案:

  1. 在参数上使用@RequestParam("name")

  2. 使用spring-boot-starter-parent

    <!-- 将spring-boot-starter-parent作为父工程在pom.xml中引入 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.1</version> <relativePath/> </parent>
  3. maven-compiler-plugin

    网友提除解决方案:父pom或本身pom中添加maven-compiler-plugin的配置:

    <build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.12.0</version> <configuration> <parameters>true</parameters> </configuration> </plugin> </build>

这可确保使用-parameters标志编译代码,从而使参数名称在运行时可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1142530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TranslucentTB终极指南:轻松实现Windows任务栏透明美化

TranslucentTB终极指南&#xff1a;轻松实现Windows任务栏透明美化 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 想要让你的Windows桌面焕然一新吗&#xff1f;TranslucentTB正是你需要的完美工具。这款轻量级软件能让…

Agent Skills(五)高级进化:强化学习与代理数据协议(ADP)——智能体技能的自我进化之路

在前几章中&#xff0c;我们讨论了如何手动编写 SKILL.md 来为智能体&#xff08;Agent&#xff09;配置“程序性知识”。然而&#xff0c;顶尖的专家经验往往难以完全用文字穷举。智能体能力的真正跨越&#xff0c;在于从“按图索骥”的指令遵循者&#xff0c;进化为能从实战中…

LeaguePrank:5个简单步骤让你的LOL界面焕然一新 [特殊字符]

LeaguePrank&#xff1a;5个简单步骤让你的LOL界面焕然一新 &#x1f3ae; 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想要为英雄联盟客户端添加个性化装扮吗&#xff1f;LeaguePrank是一款功能强大的LOL界面美化工具&…

PDF-Extract-Kit部署教程:基于GPU加速的PDF处理方案

PDF-Extract-Kit部署教程&#xff1a;基于GPU加速的PDF处理方案 1. 引言 1.1 学习目标 本文将详细介绍如何部署和使用 PDF-Extract-Kit ——一个由开发者“科哥”二次开发构建的智能PDF内容提取工具箱。该工具集成了布局检测、公式识别、OCR文字提取、表格解析等核心功能&am…

网盘直链解析工具:三分钟实现全速下载的完整指南

网盘直链解析工具&#xff1a;三分钟实现全速下载的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&#xff0…

Deepseek(八)创意灵感生成器:跨界风格融合与海报设计文案策略

在创意行业&#xff0c;最令人痛苦的莫过于“灵感枯竭”。当我们需要为品牌设计一套既有文化底蕴又不失现代感的方案时&#xff0c;传统的大脑风暴往往容易陷入思维定式。 DeepSeek 不仅仅是一个对话工具&#xff0c;它更像是一个无限容量的创意万花筒。凭借其 Mixture-of-Expe…

UART发送与接收中断协同工作的项目应用解析

UART发送与接收中断协同&#xff1a;如何让嵌入式通信既高效又稳定&#xff1f;你有没有遇到过这样的场景&#xff1a;MCU正在处理一个ADC采样任务&#xff0c;突然上位机发来一条关键控制指令&#xff0c;结果因为主循环卡在某个耗时操作里&#xff0c;串口数据没及时读取——…

SpringBoot3.3.0集成Knife4j4.5.0实战

原SpringBoot2.7.18升级至3.3.0之后&#xff0c;Knife4j进行同步升级(Spring Boot 3 只支持OpenAPI3规范)&#xff0c;从原3.0.3(knife4j-spring-boot-starter)版本升级至4.5.0(knife4j-openapi3-jakarta-spring-boot-starter)&#xff0c;以下是升级过程与注意事项等 版本信息…

AI智能体进化:学习与MCP协议实战

智能体的“自我修炼”与“通用接口”&#xff1a;学习适应与MCP协议实战解析 在智能体从“被动执行”走向“主动智能”的进化中&#xff0c;“学习与适应”是其突破预设局限的核心能力&#xff0c;而“模型上下文协议&#xff08;MCP&#xff09;”则是其打通外部世界的关键桥梁…

DLSS Swapper终极优化指南:三步实现游戏性能革命性提升

DLSS Swapper终极优化指南&#xff1a;三步实现游戏性能革命性提升 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏卡顿、帧率不稳而烦恼吗&#xff1f;想让你的游戏体验达到前所未有的流畅度&#xff1f;DL…

工业控制中JLink烧录器使用教程:快速理解通信配置要点

工业控制中JLink烧录器实战指南&#xff1a;从零理解通信配置与稳定烧录在工业自动化设备的开发现场&#xff0c;你是否遇到过这样的场景&#xff1f;产线上的PLC控制器批量刷固件时频繁超时&#xff1b;新设计的伺服驱动板始终无法被JLink识别&#xff1b;调试过程中单步执行正…

基于Java+SpringBoot+SSM社区便民服务平台(源码+LW+调试文档+讲解等)/社区服务平台/便民服务网站/社区服务应用/便民生活平台/社区便民系统/便民服务平台/社区服务平台系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

工业网关中USB Serial Controller驱动移植从零实现

工业网关中USB串口控制器驱动移植&#xff1a;从零开始的实战指南 你有没有遇到过这样的场景&#xff1f; 工业现场一堆老式PLC、温控仪、电表还在用RS-485通信&#xff0c;而你的新设计网关主控板却只留了一个UART接口。想扩展串口&#xff0c;又不想重新打板——这时候&…

springboot3整合SpringSecurity实现登录校验与权限认证(万字超详细讲解)

目录 身份认证&#xff1a; 1、创建一个spring boot项目&#xff0c;并导入一些初始依赖&#xff1a; 2、由于我们加入了spring-boot-starter-security的依赖&#xff0c;所以security就会自动生效了。这时直接编写一个controller控制器&#xff0c;并编写一个接口进行测试&…

10分钟搞定B站缓存视频永久保存:m4s转MP4完整指南

10分钟搞定B站缓存视频永久保存&#xff1a;m4s转MP4完整指南 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站缓存视频只能在手机App里播放而苦恼吗&#xff1f;那些…

SpringBoot3 集成 Shiro

Apache Shiro 是一个强大且易用的Java安全框架&#xff0c;提供了身份验证、授权、密码学和会话管理等功能。它被广泛用于保护各种类型的应用程序&#xff0c;包括Web应用、桌面应用、RESTful服务、移动应用和大型企业级应用。 Apache Shiro 没有Spring Security 那么多晦涩的…

PDF-Extract-Kit保姆级教程:布局检测与公式识别完整步骤

PDF-Extract-Kit保姆级教程&#xff1a;布局检测与公式识别完整步骤 1. 引言 1.1 学习目标 本文将带你全面掌握 PDF-Extract-Kit 的使用方法&#xff0c;重点聚焦于两大核心功能&#xff1a;文档布局检测 和 数学公式识别。通过本教程&#xff0c;你将能够&#xff1a; 独立…

PDF-Extract-Kit应用指南:图书馆文献数字化处理方案

PDF-Extract-Kit应用指南&#xff1a;图书馆文献数字化处理方案 1. 引言 在数字化时代&#xff0c;图书馆面临着海量纸质文献的电子化需求。传统的人工录入方式效率低下、成本高昂&#xff0c;且容易出错。为解决这一难题&#xff0c;PDF-Extract-Kit 应运而生——一个由科哥…

PDF-Extract-Kit教程:如何构建自定义PDF解析流程

PDF-Extract-Kit教程&#xff1a;如何构建自定义PDF解析流程 1. 引言 1.1 背景与需求 在科研、教育和企业文档处理中&#xff0c;PDF 是最常用的文件格式之一。然而&#xff0c;PDF 的非结构化特性使得从中提取文本、公式、表格等关键信息变得极具挑战。传统方法如简单 OCR …

DLSS版本切换实战:3步解决游戏画质卡顿问题

DLSS版本切换实战&#xff1a;3步解决游戏画质卡顿问题 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否遇到过这样的困扰&#xff1f;&#x1f680; 新买的RTX显卡明明性能强劲&#xff0c;但某些游戏更新后反而…