在 org.springframework.core包中的(Spring版本4.1.5)
package org.springframework.core;
public class DefaultParameterNameDiscoverer extends PrioritizedParameterNameDiscoverer {
private static final boolean standardReflectionAvailable = JdkVersion.getMajorJavaVersion() >= 5;
public DefaultParameterNameDiscoverer() {
if (standardReflectionAvailable) {
this.addDiscoverer(new StandardReflectionParameterNameDiscoverer());
}
this.addDiscoverer(new LocalVariableTableParameterNameDiscoverer());
}
}
JDK1.8版本及以上调用StandardReflectionParameterNameDiscoverer对象,通过反射实现,
1.8以下调用 LocalVariableTableParameterNameDiscoverer对象,通过org.springframework.asm中ClassReader对象分析class字节码实现