本文参考:Spring Expression Language Guide

官方文档:Spring Expression Language (SpEL)

Spring Expression Language (SpEL) 可以在运行时查找和操作对象,支持以下操作类型:

TypeOperators
Arithmetic(数学运算)+, -, *, /, %, ^, div, mod
Relational(关系运算)<, >, ==, !=, <=, >=, lt, gt, eq, ne, le, ge
Logical(逻辑运算)and, or, not, &&, ||, !
Conditional(条件判断)?:
Regex(正则表达式)matches

取对象属性值

import lombok.Data;
import org.junit.Test;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

/**
 * <p>
 * </p>
 *
 * @author chandler
 * @since 2022/6/20
 */
public class SpelExpressionParserTest {

    @Test
    public void contextTest() {
        // 目标对象
        Model model = new Model();
        model.setId(1L);
        model.setName("chandler");

        ExpressionParser expressionParser = new SpelExpressionParser();
        Expression expression = expressionParser.parseExpression("name");
        // 上下文
        EvaluationContext context = new StandardEvaluationContext(model);
        System.out.println(expression.getValue(context));
    }

    @Data
    static
    class Model{
        Long id;
        String name;
    }

}


最后输出Model对象的name属性值

在自定义注解切面里就可以动态的取方法参数对象的值了