Spring Expression Language 简明教程
Spring SpEL - Expression Interface
ExpressionParser 是 Spring SpEL 的主接口,用于将表达式字符串解析成已编译表达式。这些已编译表达式可以评估并支持解析模板以及标准表达式字符串。
Syntax
以下是创建 ExpressionParser 并使用其对象来获取值的一个示例。
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Welcome to Tutorialspoint'");
String message = (String) exp.getValue();
它应按如下方式打印结果−
Welcome to Tutorialspoint
-
ExpressionParser − 一个负责解析表达式字符串的接口。
-
Expression − 一个负责评估表达式字符串的接口。
-
Exceptions − 在解析表达式和方法调用时可引发 ParseException 和 EvaluationException。
SpEL 支持调用方法、调用构造函数和访问属性。以下示例显示各种用例。
Example
以下示例显示一个类 MainApp。
让我们更新在 Spring SpEL - Create Project 章节中创建的项目。我们正在添加以下文件−
-
MainApp.java - 要运行和测试的主应用。
以下 MainApp.java 文件的内容:
package com.tutorialspoint;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
public class MainApp {
public static void main(String[] args) {
ExpressionParser parser = new SpelExpressionParser();
// parse a plain text
Expression exp = parser.parseExpression("'Welcome to tutorialspoint'");
String message = (String) exp.getValue();
System.out.println(message);
// invoke a method
exp = parser.parseExpression("'Welcome to tutorialspoint'.concat('!')");
message = (String) exp.getValue();
System.out.println(message);
// get a property
exp = parser.parseExpression("'Welcome to tutorialspoint'.bytes");
byte[] bytes = (byte[]) exp.getValue();
System.out.println(bytes.length);
// get nested properties
exp = parser.parseExpression("'Welcome to tutorialspoint'.bytes.length");
int length = (Integer) exp.getValue();
System.out.println(length);
//Calling constructor
exp = parser.parseExpression("new String('Welcome to tutorialspoint').toUpperCase()");
message = (String) exp.getValue();
System.out.println(message);
}
}