Java获取方法参数名、Spring SpEL解析

@Test
public void testParse() {
//表达式解析
ExpressionParser expressionParser = new SpelExpressionParser();
Expression expression = expressionParser.parseExpression("#itemId");
EvaluationContext context = new StandardEvaluationContext();
context.setVariable("itemId", "100");
log.info("[SpELTest - testParse ] {} ", expression.getValue(context));
//获取方法参数名
LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
for (Method method : new StringUtils().getClass().getDeclaredMethods()) {
for (String s : discoverer.getParameterNames(method)) {
System.out.print("parm: "+s+" ");
}
System.out.println("methodName: "+method.getName());
}
}

org.springframework.core.LocalVariableTableParameterNameDiscoverer也是Spring解析Controller方法参数使用的类,原理就是读取class字节码,解析其中中的LocalVariableTable,得到方法的参数名称。

注:如果是动态代理出来的类,是拿不到方法参数名的

上一篇:IE浏览器div错乱问题


下一篇:命令行编译工具NMAKE