Spring表达式语言(SpEL)支持许多功能,您可以使用此特殊的“ ExpressionParser ”接口测试那些表达式功能。
这是两个代码段,展示了使用Spring EL的基本用法。
SpEL计算文字字符串表达式。
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'put spel expression here'");
String msg = exp.getValue(String.class);
SpEL评估bean属性–“ item.name”。
Item item = new Item("mkyong", 100);
StandardEvaluationContext itemContext = new StandardEvaluationContext(item);
//display the value of item.name property
Expression exp = parser.parseExpression("name");
String msg = exp.getValue(itemContext, String.class);
很少有示例可以测试SpEL。 代码和注释应具有自探索性。
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @author 夏天
* Created on 2021-05-31
*/
public class Spel表达式Test {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
//literal expressions
Expression exp = parser.parseExpression("'Hello World'");
String msg1 = exp.getValue(String.class);
System.out.println(msg1);
//method invocation
Expression exp2 = parser.parseExpression("'Hello World'.length()");
int msg2 = (Integer) exp2.getValue();
System.out.println(msg2);
//Mathematical operators
Expression exp3 = parser.parseExpression("100 * 2");
int msg3 = exp3.getValue(Integer.class);
System.out.println(msg3);
//create an item object
Item item = new Item("mkyong", 100);
//test EL with item object
StandardEvaluationContext itemContext = new StandardEvaluationContext(item);
//display the value of item.name property
Expression exp4 = parser.parseExpression("name");
String msg4 = exp4.getValue(itemContext, String.class);
System.out.println(msg4);
//test if item.name == 'mkyong'
Expression exp5 = parser.parseExpression("name == 'mkyong1'");
boolean msg5 = exp5.getValue(itemContext, Boolean.class);
System.out.println(msg5);
}
}
@Data
@AllArgsConstructor
class Item {
private String name;
private int qty;
}
注意
本文演示了Spring表达式解析器的一些基本用法,您应该访问此官方Spring表达式文档以获取数百个有用的SpEL示例。