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