rootObject
@Test
public void test06() {
ExpressionParser parser = new SpelExpressionParser();
parser.parseExpression("name").getValue();
parser.parseExpression("getName()").getValue();
}
在表达式中直接写name和getName(),这时候Expression是无法解析的,因为其不知道name和getName()对应什么意思。当表达式是基于某一个对象时,我们可以把对应的对象作为一个rootObject传递给对应的Experssion进行取值
@Test
public void test07() {
Object user = new Object() {
public String getName() {
return "abc";
}
};
ExpressionParser parser = new SpelExpressionParser();
Assert.assertTrue(parser.parseExpression("name").getValue(user, String.class).equals("abc"));
Assert.assertTrue(parser.parseExpression("getName()").getValue(user, String.class).equals("abc"));
}
设置上下文
通过指定EvaluationContext我们可以让name和getName()变得有意义,指定了EvaluationContext之后,Expression将根据对应的EvaluationContext来进行解析
@Test
public void test06() {
Object user = new Object() {
public String getName() {
return "abc";
}
};
EvaluationContext context = new StandardEvaluationContext(user);
ExpressionParser parser = new SpelE
深入理解JavaSpEL表达式解析:rootObject、EvaluationContext和变量管理

本文详细介绍了JavaSpEL(SpringExpressionLanguage)中的核心概念,如如何处理表达式中的name和getName(),使用rootObject作为上下文,设置EvaluationContext以赋予表达式意义,以及如何管理变量、注册方法和对List/Map进行赋值。
最低0.47元/天 解锁文章





