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
  1. ExpressionParser − 一个负责解析表达式字符串的接口。

  2. Expression − 一个负责评估表达式字符串的接口。

  3. Exceptions − 在解析表达式和方法调用时可引发 ParseException 和 EvaluationException。

SpEL 支持调用方法、调用构造函数和访问属性。以下示例显示各种用例。

Example

以下示例显示一个类 MainApp。

让我们更新在 Spring SpEL - Create Project 章节中创建的项目。我们正在添加以下文件−

  1. 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);
   }
}

Output

Welcome to tutorialspoint
Welcome to tutorialspoint!
25
25
WELCOME TO TUTORIALSPOINT