Spring MVC 参数映射问题请教

2020-04-15 17:22:44 +08:00
 gotonull

@RestController public class TestController { @GetMapping("/") public String test(String name, String sex) { return "name:" + name + "sex:" + sex; } }

请教一下各位这种情况的时候,springMVC 是如何做到准确的将请求中的 name 和 sex 映射到对应的位置。因为编译后就算是通过反射也是拿不到方法的参数名称啊。( java8 指定特殊的编译参数不算)

1543 次点击
所在节点    程序员
6 条回复
kkkkkrua
2020-04-15 17:37:22 +08:00
debug 进去就一清二楚了
waa
2020-04-15 17:53:54 +08:00
ParameterNameDiscoverer
imzhoukunqiang
2020-04-15 17:58:43 +08:00
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
gwybiaim
2020-04-15 18:00:17 +08:00
普通反射拿不到,但是字节码里面有变量名称信息
BBCCBB
2020-04-15 18:05:34 +08:00
ClassReader 或者 java8 -parameter 参数. 然后看 HandlerMethodArgumentResolver
gotonull
2020-04-15 19:05:24 +08:00
谢谢各位的解答,我找到答案了。
spring MVC 底层用了 ASM 来获取方法的形参名

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662745

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX