天元建设集团有限公司上班时间,一键优化在哪里打开,wordpress侧边栏加入广告,国外设计搜索网站简介
通常在没有显示的指定beanName的时候#xff0c;都是会根据要注入的类型以及方法名#xff0c;属性名或者参数名来找Bean#xff0c;方法名属性名还好说#xff0c;但是参数名就有点难获取#xff0c;jdk也并没有给我们提供获取的方法
在Spring中主要以两种方式来获…简介
通常在没有显示的指定beanName的时候都是会根据要注入的类型以及方法名属性名或者参数名来找Bean方法名属性名还好说但是参数名就有点难获取jdk也并没有给我们提供获取的方法
在Spring中主要以两种方式来获取一是反射这种可能获取不到二是本地变量表通过asm的方式这种肯定是可以获取到
spring提供的这两种方式我们平时也可以使用spring中也会大量使用到
为了更容易后面看源码本文西安介绍这两种方式
使用测试
public class ParameterNameDiscovererTest {public static void main(String[] args) throws NoSuchMethodException {// 反射方式StandardReflectionParameterNameDiscoverer nameDiscoverer new StandardReflectionParameterNameDiscoverer();// 本地变量表LocalVariableTableParameterNameDiscoverer localVariableTableParameterNameDiscoverer new LocalVariableTableParameterNameDiscoverer();Method method ParameterNameDiscovererTest.class.getDeclaredMethod(Name, String.class);System.out.println(Arrays.toString(nameDiscoverer.getParameterNames(method)));System.out.println(Arrays.toString(localVariableTableParameterNameDiscoverer.getParameterNames(method)));}public void Name(String name) {}
}执行输出
null
[name]上面主要以一个例子来熟悉下spring获取方法参数名的方式后面分析源码会更加容易看懂 欢迎关注学习不迷路