有一个问题关于spingmvc获取方法参数的,理论上讲spingmvc可以直接将请求参数注入controller的参数中,说明它可以直接地获得真实的参数名。
正常情况下,反射是获取不到的,主要是编译的时候没有将参数名写入class文件?(因为经过实验使用idea编译的class文件即使有写入参数名,反射还是获取不到,如果在编译的时候没有,加入-parameters,当然这个不太重要)
那问题来了,我在controller里面写一段反射获取参数名,为啥也获取不到参数名呢?spingmvc用了什么技术它就可以获取到?asm吗?
(因为经过实验使用idea编译的class文件即使有写入参数名,反射还是获取不到,加入-parameters,我在controller里面写一段反射获取参数名,为啥也获取不到参数名呢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-28 13:19关注
该回答引用NewBing
你好,这是Bing。我可以帮你解答这个问题。😊
根据搜索结果①②③,Spring MVC 可以获取方法参数名的原因是它使用了 ASM 技术来解析字节码,从而得到参数名。ASM 是一个 Java 字节码操作和分析框架,可以直接操作类或者动态生成类。
反射获取不到参数名的原因是 Java 编译器默认不会将参数名写入 class 文件,除非使用 -parameters 或 -g:vars 选项编译。即使使用了这些选项,反射也需要 JDK 8 或以上版本才能支持 Parameter 类来获取参数名。
源: 与必应的对话, 2023/2/28
(1) Spring MVC 获取方法参数的名称_CmdSmith的博客-CSDN博客. https://blog.csdn.net/CmdSmith/article/details/111048259 访问时间 2023/2/28.
(2) Spring MVC 接收请求参数所有方式总结! - 腾讯云开发者社区-腾讯云. https://cloud.tencent.com/developer/article/1646894 访问时间 2023/2/28.
(3) 为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】 - YourBatman - 博客园. https://www.cnblogs.com/yourbatman/p/11532689.html 访问时间 2023/2/28.
解决 无用评论 打赏 举报
悬赏问题
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥100 网页游戏在本地页面修改游戏结果
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现
- ¥15 图像分割、图像边缘提取
- ¥15 sqlserver执行存储过程报错
- ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
- ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
- ¥100 matlab2009 32位一直初始化
- ¥15 Expected type 'str | PathLike[str]…… bytes' instead