V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gotonull
V2EX  ›  程序员

Spring MVC 参数映射问题请教

  •  
  •   gotonull · 2020-04-15 17:22:44 +08:00 · 1721 次点击
    这是一个创建于 1689 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    6 条回复    2020-04-15 19:05:24 +08:00
    kkkkkrua
        1
    kkkkkrua  
       2020-04-15 17:37:22 +08:00 via iPhone
    debug 进去就一清二楚了
    waa
        2
    waa  
       2020-04-15 17:53:54 +08:00
    ParameterNameDiscoverer
    cookii
        3
    cookii  
       2020-04-15 17:58:43 +08:00
    org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver
    gwybiaim
        4
    gwybiaim  
       2020-04-15 18:00:17 +08:00
    普通反射拿不到,但是字节码里面有变量名称信息
    BBCCBB
        5
    BBCCBB  
       2020-04-15 18:05:34 +08:00
    ClassReader 或者 java8 -parameter 参数. 然后看 HandlerMethodArgumentResolver
    gotonull
        6
    gotonull  
    OP
       2020-04-15 19:05:24 +08:00
    谢谢各位的解答,我找到答案了。
    spring MVC 底层用了 ASM 来获取方法的形参名
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2303 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:55 · PVG 08:55 · LAX 16:55 · JFK 19:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.