本文参考:Spring Expression Language Guide
官方文档:Spring Expression Language (SpEL)
Spring Expression Language (SpEL) 可以在运行时查找和操作对象,支持以下操作类型:
Type | Operators |
---|---|
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属性值
在自定义注解切面里就可以动态的取方法参数对象的值了