简单:
// 创建解析器
ExpressionParser parser = new SpelExpressionParser();
// 定义表达式,使用参数x和y
Expression expression = parser.parseExpression("#x + #y");
// 创建评估上下文
EvaluationContext context = new StandardEvaluationContext();
// 设置参数值
context.setVariable("x", 1);
context.setVariable("y", 2);
// 计算表达式
Object value = expression.getValue(context);
System.out.println(value); // 输出 3
字符串拼接:
Expression expression = parser.parseExpression("'a'+#x+'b'");
引用Spring容器中的bean:
Expression expression = parser.parseExpression("@userService'");
使用静态方法:
Expression expression = parser.parseExpression("T(com.alibaba.fastjson.JSON).toJSONString(#bo)");
运算符:
Expression expression = parser.parseExpression("2>1 && (!true || !false)");
三元表达式:
Expression expression = parser.parseExpression("#x==#y?'a':'b'");
集合和数组
//#list[1]//取下标1的元素
//?是如果list为空就直接返回null,不会报错,SpEL支持这种写法
//取元素值大于3的元素
Expression expression = parser.parseExpression("#list.?[#this>3]");
键值对
//#map['a']//取key为a的值
//取key不为a的值
Expression expression = parser.parseExpression("#map.?[key!='a']");