简介:
Spring 表达式语言 Spring Expression Language(简称 SpEL )是一个支持运行时查询和操作对象图的表达式语言 。 语法类似于 EL 表达式 ,但提供了显式方法调用和基本字符串模板函数等额外特性 。
SpEL 虽然作为 Spring 家族中表达式求值的基础,但却可以被独立使用。
1.数字计算
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression("6+2");
System.out.println(expression.getValue());
2.字符串相关操作
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression("'SPEL'.concat('hell world')");
Object value = expression.getValue();
System.out.println(value);
3.调用方法
方法:
public class TestMethod {
public String run(String name){
return name.concat(" is running.....");
}
}
Spel调用方法
StandardEvaluationContext context = new StandardEvaluationContext(new TestMethod());
context.setVariable("abc","xiaoming");//设置一个变量abc
SpelExpressionParser parser = new SpelExpressionParser();
//调用new TestMethod()#run方法,用#abc将变量从StandardEvaluationContext取出来传递给run方法
Expression expressionParser = parser.parseExpression("run(#abc)");
//expressionParser.getValue(context)获取方法的返回值
System.out.println(expressionParser.getValue(context));
Spel嵌套调用方法
public static DeptPO local2(Long deptno){
StandardEvaluationContext context = new StandardEvaluationContext(new People());
context.setVariable("deptno",deptno);
SpelExpressionParser parser = new SpelExpressionParser();
Expression expression = parser.parseExpression("local(dname(#deptno).getDname())");
return (DeptPO) expression.getValue(context);
}