org.springframework.expression.Expression
的 Object getValue(EvaluationContext context)
方法中的 context
参数是 EvaluationContext
类型的对象。该参数的作用是提供评估表达式时所需的上下文信息。EvaluationContext
包含了变量、函数、类型转换器等信息,能够影响表达式的评估结果。通过传递不同的 EvaluationContext
,可以在不同的上下文中评估相同的表达式,从而获得不同的结果。
EvaluationContext
主要有两种实现:StandardEvaluationContext
和 SimpleEvaluationContext
。下面是具体的代码示例说明:
StandardEvaluationContext
StandardEvaluationContext
是功能最全的上下文,支持变量、函数、自定义类型转换等。
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
public class StandardEvaluationContextExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
// 设置变量
context.setVariable("name", "Spring Framework");
// 评估表达式
String value = parser.parseExpression("#name").getValue(context, String.class);
System.out.println(value); // 输出: Spring Framework
}
}
SimpleEvaluationContext
SimpleEvaluationContext
是一个轻量级的上下文,只支持读取和写入属性,不支持变量和函数。
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.SimpleEvaluationContext;
public class SimpleEvaluationContextExample {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
SimpleEvaluationContext context = SimpleEvaluationContext.forReadWriteDataBinding().build();
// 评估表达式
String value = parser.parseExpression("'Hello ' + 'World'").getValue(context, String.class);
System.out.println(value); // 输出: Hello World
}
}