Spring SpEL - 表达式接口


ExpressionParser是Spring SpEL的主要接口,它帮助将表达式字符串解析为编译后的表达式。这些编译的表达式可以被评估并支持解析模板以及标准表达式字符串。

句法

以下是创建 ExpressionParser 并使用其对象获取值的示例。

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Welcome to Tutorialspoint'");
String message = (String) exp.getValue();

它应该打印结果如下 -

Welcome to Tutorialspoint
  • ExpressionParser - 负责解析表达式字符串的接口。

  • 表达式- 负责评估表达式字符串的接口。

  • 异常- 在 parseExpression 和 getValue 方法调用期间可能抛出 ParseException 和 EvaluationException。

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

例子

以下示例显示了MainApp类。

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

  • 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);	   
   }
}

输出

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