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,得到方法的参数名称。
注:如果是动态代理出来的类,是拿不到方法参数名的


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM